Data exploration system

ABSTRACT

An improved data exploration system and method for analyzing and exploring complex data sets involving multiple data dimensions and multi-variable data presentations. The system can generate visual representations of complex data sets in a map format, in which symbols representing the complex data sets are plotted based on data underlying the various symbols. The positions of a first set of symbols can be plotted in the map format relative to a first axis based on the data underlying each symbol, and index numbers corresponding to a second set of symbols can be plotted in the map format along a second axis orthogonal to the first axis, thereby facilitating visual comparison and comprehension of selected characteristics of the data.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a divisional application of co-pending U.S. patentapplication Ser. No. 11/059,432 filed Feb. 16, 2005 entitled DATAEXPLORATION SYSTEM.

This application claims priority of U.S. Provisional Patent ApplicationNo. 60/545,150 filed Feb. 17, 2004 entitled DATA EXPLORATION SYSTEM.

STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT

Not applicable

BACKGROUND OF THE INVENTION

The present application relates generally to systems and methods ofanalyzing and exploring data, and more specifically to an improvedsystem and method of analyzing, exploring, and comprehending informationrelationships in data.

In recent years, computer systems have enabled individuals andorganizations to capture and store vast quantities of data. Theexistence of such large quantities of data has lead to an everincreasing need for improved systems and methods of analyzing andexploring data. For example, spreadsheets have traditionally beenemployed as a tool for interacting with and analyzing data. Spreadsheetstypically organize data in rows and columns. When implemented as acomputer program running on a computer system, spreadsheets aretypically operative to manipulate the rows and columns of data, to applyalgebraic operations to the data, and to explore various “what if”scenarios based on the data analysis requirements of a user. Further,spreadsheet computer programs typically allow the user to generategraphical representations of the data for subsequent display on a videomonitor.

Traditional spreadsheets and spreadsheet computer programs havedrawbacks, however, in that they are limited in the complexity of thedata that can be manipulated. For example, spreadsheet computer programstypically operate on data stored in flat files, and are generally unableto handle complex data sets involving multiple data dimensions and/ormulti-variable data presentations. The graphical data representationsthat can be generated by traditional spreadsheet computer programs alsosuffer significant limitations.

More recently, a number of computerized visualization techniques havebeen developed for analyzing and displaying data acquired by computersystems. For example, geographic information system (GIS) technology canbe employed on a computer system to capture, store, analyze, and displayvisual representations of geographically referenced data, i.e., datathat is identified according to its geographic location. In a typicalgeographic information system, data can be captured and plotted on a mapto relate various groups of data (e.g., the levels of rainfall occurringat fixed geographic locations, and the locations of marshes) in aspatial context, thereby allowing a user to draw conclusions about thedata (e.g., which marshes are likely to dry up) and to extract newinformation from the data relationships (e.g., information relating tohow humans might best interact with the various marsh locations toprotect fragile ecosystems). A typical GIS can organize different groupsof data in respective map layers or overlays. Geographic informationsystems are also typically capable of rendering symbols used on maps(e.g., the symbols used to represent the data corresponding to therainfall levels and the marshes) based on information relating to thedata group that the symbols represent. For example, a GIS can vary thesize, the shape, and/or the color/shade of particular symbols based onthe rainfall levels in particular locations and/or the likelihood of themarshes in those locations to dry up.

Geographic information systems also have drawbacks, however, in thatthey are typically unsuited for use as a general data analysis tool. Forexample, as explained above, a conventional GIS is designed to handledata identified according to its fixed geographic location. For thisreason, data that does not have corresponding geographic referencesnormally cannot be analyzed by a GIS. Even if representative locationreferences were derived for a set of data before providing the data to aGIS for analysis, the mapping of the data by the GIS would likely beconstrained by the fixed nature of the data locations, thereby limitingthe number of possible visual data representations that can be presentedto a user, and in turn, limiting the user's ability to comprehend newinformation from the data relationships.

It would therefore be desirable to have an improved system and method ofanalyzing, exploring, and comprehending information relationships withinvarious groups of data. Such an improved data exploration system wouldprovide multiple visual data representations that are adaptable to theneeds of a system user, while avoiding the drawbacks of conventionaldata analysis systems and techniques.

BRIEF SUMMARY OF THE INVENTION

In accordance with the present invention, an improved data explorationsystem and method are provided that can be used to analyze and toexplore complex data sets involving multiple data dimensions andmulti-variable data presentations. The presently disclosed dataexploration system and method enable a system user to generate multiplevisual representations of the complex data sets, in which symbols arerendered and/or plotted based on the data underlying the varioussymbols, thereby facilitating the user's analysis and comprehension ofinformation relationships within the data sets.

In one embodiment, the data exploration system is operative to generatevisual representations of complex data sets in map, table, and tree viewformats. In each of these view formats, both the appearance and thearrangement of the symbols representing the data sets are based on thedata itself, thereby facilitating the comprehension of patterns andinformation relationships within the data sets. Further, the data can beviewed at different levels of density for performing detailed analysisof the data, and for detecting the presence of overall trends within thedata. Moreover, the data exploration system is operative to perform asuite of calculation operations to cast the data in different forms, andto facilitate the acquisition, integration, and analysis of the data.

In the presently disclosed embodiment, each one of the symbols employedin the map, table, and tree visual data representations has underlyingdata directly associated therewith. Moreover, the underlying dataassociated with each symbol corresponds to a named group of data unitshaving the same data structure. For example, the data exploration systemcan access each named group of data from a respective spreadsheet.Further, in a map representation of the data, a first data group can berepresented by a point symbol, and a second data group can berepresented by a connection line symbol disposed between two or morepoints. The first data group and the second data group typicallyrepresent the rows of data in the respective spreadsheets, while thecolumns of data within the respective spreadsheets include additionalinformation about the particular data groups. It is this additionalinformation relating to the data groups included within the spreadsheetdata columns that can be viewed and explored at different density levelswhile performing detailed data analysis.

The data exploration system and method organizes each group of dataunits having the same data structure in a respective layer. Moreover,the data exploration system acquires and manipulates the data unitswithin each layer together as a group. For example, the data groupsincluded within the spreadsheets described above can be made tocorrespond to respective layers, i.e., one layer for the first datagroup and another layer for the second data group. Further, whendisplayed in a display window on a video monitor, one data layer isconceptually stacked on top of the other data layer to generate the maprepresentation of the data. As a result, the point and connection linesymbols representing the first and second data groups, respectively,appear to be superimposed. In the presently disclosed embodiment, eachlayer includes either point symbols or connection line symbols, but notboth.

The symbols employed in the map, table, and tree visual datarepresentations can be rendered based on the data underlying the varioussymbols. Specifically, rendering attributes such as the color/shade,shape, size, or font corresponding to each symbol can be determinedbased on at least a portion of the symbol's underlying data. Forexample, in the event the data exploration system accesses each nameddata group from a respective spreadsheet, a plurality of data binninglevels can be defined for the respective layer data columns within thespreadsheet. Each binning level for a respective layer data columnassociates a level number with a data range or match criteria todetermine whether a particular data value within that data column is inthe corresponding bin. For each data layer in the map, table, or treeview, the binning levels for a respective data column can be associatedwith the appearance of a particular rendering attribute, e.g., thecolor/shade, shape, size, or font, for the data symbol within thatlayer.

The symbols employed in the map visual data representation can also beplotted based on the data underlying the various symbols. For example,the positions of point symbols relative to a first axis within the maprepresentation can be plotted based on at least a portion of theunderlying data associated with each point symbol, and index numberscorresponding to the connection line symbols may be plotted along asecond axis orthogonal to the first axis, thereby facilitating thevisual comparison and comprehension of selected characteristics of theunderlying data.

Specifically, in one embodiment, one or more groups of data units areobtained from a data source, and organized in a plurality of layers,including at least one parent layer and at least one child layer. Acontainment relationship exists between at least one data unit in theparent layer and at least one data unit in the child layer. Next, acompound plot of the data units in the parent and child layers isoutputted at an output device relative to x and y coordinate axes. Afirst plot controller and a second plot controller are then created forcontrolling the plotting of the respective groups of data units in theparent and child layers, respectively, in the compound plot. Next, eachdata unit is plotted in the parent layer relative to the x and ycoordinate axes, such that each plotted data unit in the parent layer isrepresented by a first symbol having a corresponding position relativeto the x and y coordinate axes. Each data unit in the child layer isthen plotted relative to the x and y coordinate axes, such that eachplotted data unit in the child layer is represented by a second symbolhaving a corresponding position relative to the x and y coordinate axes.Further, each second symbol is proximate to the position of the firstsymbol that has a containment relationship with the plotted data unit inthe child layer. Based on attribute data associated with each data unitin the child layer, the position of each second symbol representing theplotted data unit in the child layer is then offset, from the positionproximate to the position of the first symbol, along a selected one ofthe x and y coordinate axes.

By enabling a user to generate multiple visual data representations inwhich symbols are rendered and/or plotted based on the data underlyingthe various symbols, the presently disclosed data exploration systemsignificantly enhances the user's ability to analyze, explore, andcomprehend information relationships within large quantities of data.

Other features, functions, and aspects of the invention will be evidentfrom the Detailed Description of the Invention that follows.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The invention will be more fully understood with reference to thefollowing Detailed Description of the Invention in conjunction with thedrawings of which:

FIG. 1 is a block diagram of a data exploration system according to thepresent invention;

FIG. 2 is a block diagram of a client/server interface to the dataexploration system of FIG. 1; and

FIGS. 3-45 b are display windows of an illustrative session in which thedata exploration system of FIG. 1 is employed.

DETAILED DESCRIPTION OF THE INVENTION

The disclosure of U.S. Provisional Patent Application No. 60/545,150filed Feb. 17, 2004 entitled DATA EXPLORATION SYSTEM is incorporatedherein by reference in its entirety.

An improved data exploration system and method are disclosed that can beused to analyze and to explore complex data sets. In a preferredembodiment, the data exploration system and method are implemented on acomputer system configurable to capture, to store, to analyze, toexplore, and to display multiple visual representations of the complexdata sets, in which symbols are rendered and/or plotted based on thedata underlying the various symbols. In the preferred embodiment, thedata exploration system includes a data storage system, at least oneprocessor, and at least one output device such as a printer or a videomonitor or display. The data storage system includes at least one memoryconfigured with a data structure to maintain and to store complex datasets in multiple dimensions and involving multi-variable datapresentations. The processor is operative to execute at least onesoftware program out of the memory for organizing the data sets in aplurality of layers, and for arranging attributes of the data sets intovisual data representations in map, table, and tree view formats. In analternative embodiment, the software program executed by the processoris encoded on a computer readable medium such as a CD-ROM, a hard disk,or a floppy disk. The output device is configured to display the visualdata representations in the map, table, and tree view formats forsubsequent analysis by a system user. The presently disclosed dataexploration system and method significantly enhance the ability of thesystem user to comprehend relationships in large quantities of data, todraw conclusions about the data, and to extract new information from thedata relationships.

In the preferred embodiment, the software program directing thefunctionality of the data exploration system is implemented using theJava programming language, or any other suitable programming language.Such software programs are generally designed to run on computer systemsthat include one or more input devices, one or more processing systems,one or more memory systems, and one or more output devices. For example,such a computer system can include one or more computers such as aclient computer and a server computer, at least one central processingunit (CPU) with a memory system, and a user interface including at leastone input device such as a keyboard, a mouse, or any other suitableinput device, and at least one output device such as a printer, a videomonitor or display, or any other suitable output device.

FIG. 1 depicts an illustrative embodiment of a data exploration system100, in accordance with the present invention. In the illustratedembodiment, a user 102 such as a human operator interacts with the dataexploration system through a user interface 104. Specifically, the userinterface 104 allows the user 102 to control the operation of the system100 via one or more input devices, to examine results via one or moreoutput devices, and to control system and default parameters. It isunderstood that the user 102 may alternatively comprise a separatecomputer system configured and arranged to interact with the userinterface 104.

It should be noted that during system initialization, the dataexploration system 100 reads a configuration file that definesproperties controlling various aspects of the system's behavior andcorresponding property default values or settings. In the preferredembodiment, the properties defined in the configuration file includecustom add-on properties, e.g., custom Java classes, to support theexploration of specific data applications.

In the presently disclosed embodiment, the user 102 employs thefunctionality of the data exploration system to analyze and to explorecomplex data sets obtained from one or more data sources 124, which cancomprise one or more databases. Specifically, the data explorationsystem 100 is configured to provide functionality 108, 110, and 112specifically related to the map, table, and tree view formats for thedata sets to be explored, and functionality 106 common to the map,table, and tree views of the data. The data exploration system 100 isalso configured to provide backbone functions 114, data binning andrendering functions 116, functions related to data units and layers 118,layer and view input and output functions 120, and functions related tolayer and view descriptions 122. As shown in FIG. 1, the user interface104 interacts directly with the system functionality depicted in blocks106, 108, 110, and 112, which in turn interact with the backbone 114 ofthe system. Further, the backbone 114 interacts with the functionalityrelated to the data binning and rendering 116, the data units and layers118, and the layers and view input and output 120. It is noted that thecommon view functionality 106 also interacts with the data binning andrendering functions 116. Moreover, the layer and view input and outputfunctions 120 are operative to access the layer and view descriptions122 and the data sources 124.

Specifically, the common view functionality 106 comprises all of thefunctionality of the data exploration system 100 that is the same forthe map, table, and tree formats for viewing the data. The common viewfunctionality 106 directs the operation of control buttons used ondisplay windows in all views (e.g., layers, edit, attach/detach, andremove control buttons), allows layers to be maintained on therespective views, allows data units displayed on the views to be edited,allows the views to be displayed as a tab panel on a master displaywindow (attach) or in a standalone display window (detach), allows dataunits selected on one view to have these selections propagated to otherviews displaying the same data unit, and allows the data valuesthemselves to be displayed on a popup display window adjacent to itsvisual representation in the respective view.

The map specific functionality 108 pertains to views of the data in themap format. In the presently disclosed embodiment, the map specificfunctionality 108 allows data units to be displayed on the maps as pointsymbols and connection line symbols, allows the symbols for points andconnections to be displayed or hidden depending on the layer hierarchyand the layer collapse/expand functionality, handles map backgroundimages, allows data unit labels to be displayed or hidden, allows mappositions and scale to be controlled (e.g., by zoom, transform, andplotting operations), and allows data units and their positions to bechanged via editing operations driven by mouse commands.

The tree specific functionality 110 pertains to views of the data in thetree format. Specifically, the tree specific functionality 110 allowsdata units to be rendered as nodes in a tree (including having multipleoccurrences, if warranted, by the tree hierarchy), and allows the treehierarchical structure to be predetermined by data unit parent/childrelationships between data units in the layer hierarchy and therelationship between the connection symbols and their endpoint pointsymbols.

The table specific functionality 112 pertains to views of the data inthe table format. Specifically, the table specific functionality 112allows data units to be rendered as rows in a table showing field valuesas cells in the table columns, allows the table to be sorted by valuesin the table columns, and allows field values to be modified by editingthe table.

The backbone functionality 114 handles the data units, the data layersthat group the data units and associate them with the data fields, theviews that visually present the data units to the user 102, and thesymbolic representations of the data units in the various views.

The data binning and rendering functionality 116 allows data fieldcolumns to be defined for the various data layers, allows data fieldvalues to be maintained for each data unit in the respective layer,allows binning levels to be defined for field columns controlling how adata unit's field value for that column should be treated when the unitis rendered, and allows rendering attributes to be defined and tied tothe binning levels.

The data unit functionality 118 allows the data units to maintainpositioning information so they can be placed on maps, and to referenceother data units to support connections and parent/child relationships.The data unit functionality 118 also allows the data units to bemaintained in layers on the various views. The data layer functionality118 allows the data layers to maintain groups of data units by tyingthem to their data fields. The data layer functionality 118 also allowsthe layers to be maintained in views in a hierarchy so that each viewcan act on its data units as a group and can control hierarchicalparent/child relationships between the data units in different layerswithin the hierarchy.

The layer and view input and output functionality 120 allows layerdefinitions and data to be read from the data sources 124. In thepreferred embodiment, the layer and view input/output functionality 120includes secure access and reading from the databases and spreadsheets.In addition, the layer and view input/output functionality 120 allowslayer definitions and data to be saved to spreadsheets, and allows viewdefinitions to be read from and saved to the spreadsheets.

As described above, the presently disclosed data exploration system 100can comprise a computer system including one or more computers such as aclient computer and a server computer. FIG. 2 depicts a client/serverinterface 200 to the layer and view input and output 120 of the dataexploration system 100 (see FIG. 1). It is noted that the dataexploration system 100 is configured to incorporate customized add-onJava classes written with specific knowledge of the data to be explored,thereby allowing the system to perform special manipulations using thatdata. In the illustrated embodiment, the layer and view input and output120 is configured to act as a data server to client classes 234 usingthe client/server interface 200. Specifically, layers in the layer andview input and output 120 (see FIG. 1) are configured to act as serversto the clients attaching to them via layers 220 of the client/serverinterface 200 (see FIG. 2).

As shown in FIG. 2, the client/server interface 200 has a client/serverclass architecture providing two interfaces, namely, a first interface230 for the server (layer) side, and a second interface 232 for theclient (layer) side. The client/server interface 200 allows clients toaccess the server layer directly, to listen for layer events, to add andto remove data units from the layer, to maintain a set of data unitsincluding all units that span all layers attached to the client and havethem be kept up-to-date by the server (much like a view maintaining aset of data units), and to have changes in the data units made by theclient to be picked up by the backbone of the data exploration system100. It should be appreciated, however, that the data exploration system100 can operate without the client/server interface 200 by inputting andoutputting layers of data from/to the data sources 124.

The operation of the presently disclosed data exploration system 100(see FIG. 1) will be better understood with reference to the followingillustrative example and FIGS. 3-45 b, which depict various displaywindows generated by the system. In this example, the data explorationsystem 100 employs data derived from a hypothetical national datacommunications network (the “USNetwork”) to illustrate the functionalityof the system. FIG. 3 depicts a map view of the USNetwork, showingrepresentations of 24 cities and communications trunks that connectthem.

It is noted that the term “data unit” (or unit) is used herein for dataentities represented by the data exploration system 100. There are twokinds of units, namely, point units (or points) and connection units (orconnections). On map views, point units are represented as symbols atdistinct positions. On the map of the USNetwork (see FIG. 3), the citiesare represented by point units shown as ovals. Connection units connecttwo point units. On map views, connection units are shown as linesjoining the point units they connect. On the USNetwork map, the trunksare represented by connection units shown as lines connecting thecities. Each unit has a unique name, called the “unit name”.

FIG. 4 depicts a tree view of the USNetwork city and trunk units. Unitson a tree view are represented as nodes. Tree views can be arranged toshow the hierarchical relationship of the data units they contain. Thetree view of FIG. 4 is arranged to show the trunks that are connected toeach city.

It should be understood that data units in a layer can have informationassociated with them. The term “data field” (or field) refers to asingle piece of information associated with a unit. FIG. 5 depicts atable view of the cities in the USNetwork. As shown in FIG. 5, the datafields for the cities are represented as columns in the table (e.g.,Region, Gateway, Traffic, RegionCityIndex). It should also be understoodthat individual data units can reside in more than one layer. When inmultiple layers, each layer can associate different information with theunit.

In the preferred embodiment, the data exploration system 100 supportsseveral types of data fields. The data field types supported by thesystem include the following:

Unit—the name of the unit itself.

String—text.

Integer—whole numbers.

Double—numbers with decimal points.

Boolean—true/false.

Date—a calendar designation including year, month, day.

Time—a time specification including hour, minute, second.

DateTime—a calendar and time specification including year, month, day,hour, minute, second.

Parent—the name of a unit that is the parent of this unit whenperforming hierarchical operations on map and tree views.

Owner—the same as Parent, but in addition the name of the parent unit isused as the prefix of the name of this unit.

Relative—the same as Parent, but in addition the position of this uniton map views is relative to that of the parent unit.

OwnerRelative—a combination of Owner and Relative data types.

RelativeOwner—the same as OwnerRelative.

EndPoint—the name of one of the two endpoints of a connection unit.

EndOwner—the name of a unit used as the prefix of the name of a unit inthe next EndPoint column.

EastPos—the East (horizontal) position coordinate of the unit on thedisplay window.

NorthPos—the North (vertical) position coordinate of the unit on thedisplay window.

The data exploration system 100 organizes data units in layers. A layeris a group of data units having the same data column structure, and thatis acquired and manipulated together by the system. Each layer has aunique name, called the “layer name”. An individual layer includes asingle kind of unit, e.g., point layers include point units, andconnection layers include connection units.

When presented on a map view, symbols for each layer appear as thoughthey are drawn on a sheet of clear plastic, and the clear plastic sheetsare conceptually stacked on top of each other to form the complete map.This stacking of the data units is the origin of the term “layer”, whichis also employed in CAD/CAM and geographical information systems (GIS)technologies. The USNetwork described in this illustrative example hastwo layers, designated as the Cities and Trunks layers.

A significant portion of the functionality of the data explorationsystem 100 is related to the system's handling of the data layers. Suchdata layer handling is controlled at the layer level, affecting allunits in the layer and how they appear relative to other units on theviews that show them.

Specifically, it is on a per layer basis that—

a. The unit data column structure (data type and column name) isdefined.

b. Data is acquired by the system from an outside source (e.g., adatabase or a spreadsheet).

c. Data is added to individual views (maps, trees, tables).

d. The appearance (e.g., color/shade, size, symbol, font) of the datawithin individual views is controlled, for all units in a layer or basedon the layer's data fields.

e. The hierarchical relationship between units in different layers isshown. Placing a view's layers in a hierarchical relationship relativeto each other (the layer hierarchy) causes the units on the view tochange, based on the Parent data type relationships between adjacentlayers in the hierarchy.

f. Layer fields and units are calculated and generated by the system,based on other data in the same layer or in other layers, as controlledby, e.g., spreadsheet style formulae.

g. Data map scale and unit positioning are controlled by transform andplotting layer specifications.

h. Data modified by the system is saved.

An individual view (map, tree, or table) displays one or more layers ofdata. When a view includes multiple layers, several system featuresutilize the relationship between the layers to control how the unitsthey contain appear on the view. The relationship between the layers ina view is called the “layer hierarchy”, which allows the system toexplore containment relationships present in the layer's data.

The layer hierarchy is controlled on a Layers & Rendering display windowfor the view via a layer tree, such as the layer tree 902 of FIG. 9. Thelayer tree has a node for each layer included in the view. The structureof the tree shows the relationship of the layers in the view. The layertree's structure (and hence the layer hierarchy) is controlled by thefour arrow buttons to the right of the layer tree (↑, ↓, ←, →; see FIG.9).

An overview of the system features controlled by the layer hierarchy isdescribed below. For example, a view's layers can be positioned bothvertically and horizontally in the layer hierarchy. The vertical layerhierarchy position controls the precedence of units in the layers. The ↑and ↓ arrow buttons are used to set the vertical position.

On map views, point and connection unit symbols are drawn in the orderof the layers. This means that if symbols overlap, or if the same unitis in multiple layers, units in the upper layers will be drawn last, andwill therefore appear to be “on top”. It is noted that because allconnections are drawn before all points, the layer precedence orderingaffects points relative to other points and connections relative toother connections.

On tree and table views, a unit's representation (e.g., a tree node or atable row) is associated with a single layer. If a unit is in more thanone layer in the view, then the layer that is used is the one that ishigher in the layer hierarchy.

The horizontal layer hierarchy position controls the parent/childrelationship of the layers. The ← and → arrow buttons are used to sethorizontal position (see FIG. 9). By way of the parent data types, thedata columns in a layer can express one or more parent units for a unitin that layer. The parent data types do this by containing references tounits that reside in other layers. The map and tree views can use theseparent/child relationships to control the presentation of the units, butit does not have to do this all the time. In fact, it may not even bepossible in cases where a unit has multiple parents because typicallyone parent/child relationship can be expressed at a time. The layerhierarchy is used to control the presentation of parent/childrelationships. For example, a parent/child relationship is used by a mapor tree when the layer including the child unit is immediatelysubordinate to the layer including the parent unit in the layerhierarchy.

Map views display units as symbols in a two-dimensional map format. Asshown in FIG. 3, point units are displayed as symbols at distinctpositions, and connection units are displayed as lines connecting thepoint units. When multiple connection units connect the same pointunits, the connecting lines that represent them on maps are offset fromeach other so each connection unit is visible.

Map views can have either a plain background or a background image. Whenthe background is plain, its color/shade can be chosen by the user. Forexample, FIG. 3 depicts a plain white background. Background imagesoriginate from image files, which can be provided to the system vianormal Java functionality. The background image can be hidden ordisplayed. When displayed, the background image provides a backdropbehind the symbols representing the units displayed on the map. Theimage can be displayed in its original color, or in gray scale. Forexample, FIG. 6 depicts the same map as FIG. 3, except it has abackground image.

It should be noted that the data exploration system 100 can flexiblyposition the unit symbols, while making no assumptions about what thesymbols represent. The system utilizes coordinates that are not tied toany physical units or to the graphical display coordinate system used todisplay the maps. Coordinates in this system can be generated by severaldifferent techniques. Further, unit positions can be applied globally tounits on all maps, or can be locally applied to units on a single map,allowing alternative positioning of the same data to coexist ondifferent maps so they can be simultaneously compared.

The unit coordinate system origin (i.e., point 0.0, 0.0) is normally atthe lower left-hand corner of the map. A position is represented by thecoordinates EastPos and NorthPos, representing offsets to the East(right) and to the North (above) of the origin. EastPos and NorthPos areunit-less decimal numbers representing fractional portions of the mappanel. In this example, EastPos=0.0 is the left side of the panel,eastPos=10.0 is the right side of the panel, NorthPos=0.0 is the bottomof the panel, and NorthPos=10.0 it the top of the panel.

The map panel size in each dimension is the larger of the correspondingdimensions of the display window on which the panel is displayed. Thiscauses the map dimensions to be stretched to fill the display window onwhich it is displayed when that window's dimension is larger than theminimum map size. When the window's dimension is smaller than theminimum map size, only a portion of the map is visible, and a scrollbaris used to browse that dimension.

In this illustrative example, the minimum map panel size is set asfollows. If the map has no background image, the minimum map panel sizeis 500 pixels in each dimension. If the map has a background image(either visible or hidden), then the minimum map panel size is theoriginal size of the background image.

The map panel is spanned by the EastPos and NorthPos coordinates rangingfrom 0.0 to 10.0. It is noted, however, that the EastPos and NorthPoscoordinates are not limited to that range. Symbols having coordinatesoutside of that range will simply not appear on the map.

It should be appreciated that this general coordinate scheme istypically not the same as the graphics pixel coordinate scheme used todisplay the map. This means that unit coordinates are converted tographics coordinates during the process of displaying the map. Unitcoordinates are converted to graphics coordinates to display unitsymbols on the map. Graphics coordinates are the normal pixelcoordinates Java uses for panels, i.e., X corresponds to pixels to theright of the panel's left border, and Y corresponds to pixels down fromthe top of the panel.

The conversion from unit to graphics coordinates can be expressed as

X=MapPanelWidth*(EastPos/10.0)  (1)

Y=MapPanelHeight*((1.0−NorthPos)/10.0).  (2)

The conversion from graphics to unit coordinates can be expressed as

EastPos=X*(10.0/MapPanelWidth)  (3)

NorthPos=1.0−((Y/MapPanelHeight)*10.0).  (4)

Right clicking the mouse on a unit's map symbol causes its associateddata to be displayed on a popup menu window, such as the popup menuwindow 702 (see FIG. 7). For point units, the mouse is positioned overthe unit symbol itself. For connection units, the mouse is positionedover the connection's control point, which is a small box located at theconnection's midpoint. This popup window includes the unit's name,layer, and name/value pair for each data field. FIG. 7 depicts theUSNetwork map with the popup data window 702 displaying the dataassociated with city “CHI”. The popup menu window for point units onmaps includes three menu buttons, namely, Collapse, Expand, andTransform. The purpose of these menu buttons is described below. It isnoted that popup data windows are also available on tree views. Rightclicking on a node displays the data associated with the unit the noderepresents.

Unit symbols on map views can be completely hidden, or have their labelshidden, on a layer-by-layer basis. This is controlled by the Hide/Showbutton and Hide Labels/Show Labels button located to the right of thelayer tree 902 on the Layers & Rendering window (see FIG. 9). TheHide/Show button and Hide Labels/Show Labels button operate on the layerthat is selected in the layer tree 902.

FIG. 8 is the USNetwork map whose appearance has been changed using theHide/Show Layers and Hide/Show Labels. The Regions layer is a pointlayer including six units representing regions of the United States(NorthEast, SouthEast, Central, Mountain, NorthWest, and SouthWest). Upto now, this layer had been hidden. The six regions are indicated byrectangular symbols. The trunks layer includes the labels for the trunkconnection units, which had previously been hidden. They are now shown(e.g., BOS_NY_(—)01 between BOS and NY, MIA_NY_(—)01 between MIA and NY,etc.) in FIG. 8.

On map views, point units can be collapsed under other point units whentheir associated data expresses a parent/child relationship. This isdone by manipulating the map's layer hierarchy. This can be done whenpoint units in one layer (childLayer) use one of the parent data types(Parent, Owner, Relative, OwnerRelative) to designate parent point unitsin another layer (parentLayer). The ← and → arrow buttons on the Layers& Rendering window (see FIG. 9) can be used to arrange the layer tree.The right arrow button is used to make the selected point layer(childLayer) subordinate to the layer immediately above it in the layertree (the parentLayer). This causes all of the units in childLayer (thechild units) to be collapsed under any units in the parent layer thatare defined as parent units in the child layer's data (the parentunits). The collapsed child units are hidden. In addition, connectionsto the child units are adjusted. All connections between a child unitand a unit not having the same parent unit are now connected to theparent unit. Further, all connections between child units having thesame parent unit are hidden. The ← arrow is used to promote the selectedchild layer, making it no longer subordinate to the parent layer. Itundoes the collapsing of the child units.

When collapsed, the child units of individual parent units can beexpanded. Right clicking the mouse on the parent unit causes itsassociated data to be displayed on a popup menu window, as describedabove (see, e.g., the popup menu window 702 of FIG. 7). This popup menuincludes the menu buttons Collapse and Expand. The Expand button“uncollapses” the child units associated with this parent unit,including the connection to them. After expanding the child units inthis way, the Collapse popup menu button can be used to “re-collapse”the child units of this parent unit. Accordingly, in response topredetermined events such as actuating the Collapse and Expand buttons,the child units of respective parent units can be alternately collapsedand expanded as herein described.

FIG. 9 depicts the Layers & Rendering window for the USNetwork map. Thelayer tree 902 is in the upper left corner. It shows that the USNetworkmap includes additional layers besides the Cities and Trunks layersdescribed above. For example, a layer called Switches is collapsed underCities. Another layer called Ports is collapsed under Switches. Thismeans that the USNetwork map described above utilizes theCollapse/Expand functionality. Trunks are attached to specific ports onindividual switches. Collapsing these layers as shown hides both theports and the switches. Trunks that connect ports on switches indifferent cities are shown as being connected to the city itself. Trunksbetween ports on switches in the same city are hidden. The Switches andPorts layers are described below (see, e.g., FIGS. 18-21).

Another layer is called the Regions layer (see FIG. 9). The Regionslayer includes six units representing regions of the United States(NorthEast, SouthEast, Central, Mountain, NorthWest, and SouthWest).Each city is in a region, as identified by the parent column calledRegion. FIG. 10 depicts the USNetwork with the Regions layer shown asrectangular symbols (see also FIG. 8).

Adjusting the layer tree to collapse the Cities layer under the Regionslayer causes the city symbols to be hidden, along with any trunks thatconnect cities within the same regions. Trunks that connect differentregions are now depicted as connecting the regions, as shown in FIG. 11.The corresponding layer tree is depicted in FIG. 12.

Right clicking the Mountain region symbol and invoking the Expand menubutton on the resulting popup menu causes the cities in the Mountainregion to be expanded, as shown in FIG. 13. Invoking the Collapse menubutton on the Mountain region popup collapses the cities in the Mountainregion, returning the map appearance back to that shown in FIG. 11.

On map views, entire point layers can be collapsed to a single symbolrepresenting the entire layer. An entire point layer can be collapsedonto a single symbol using the Collapse/Expand button to the right ofthe layer tree 902 on the Layers and Rending window (see FIG. 9). Thissymbol is called the “layer unit”. The layer selected on the layer treeis collapsed. All symbols for point units in the layer are hidden. Theyare replaced by the layer unit. All connections between units in theselected layer and units in other layers are now connected to the layerunit. All connections between units within the collapsed layer arehidden. Expanding the collapsed layer undoes the collapse. FIGS. 14 a-14b depict an example of collapsing an entire layer.

The scale of a map's field of view can be adjusted by zooming, which iscontrolled by a zoom factor. In this illustrative example, a factor of1.0 means no zoom. Smaller factors “zoom out”, giving a wider field ofview. Larger factors “zoom in”, giving a more detailed field of view.Both unit symbol positions and the background image (if any) are“zoomed”. Unit symbol sizes remain unchanged during zooming. FIG. 15depicts an example of “zooming in”.

In the presently disclosed embodiment, a “transform” is defined as alinear transform operation on point unit positions in map views.Transforms permit convenient examination of data at different levels ofdetail, adjusting to different map background images and centering ondesignated units. The linear transform is based on predetermined scaleand offset factors for each axis. The general formulae for a lineartransform from untransformed to transformed unit coordinates can beexpressed as

EastTransform=(eastScale*eastPos)+eastOffset  (5)

NorthTransform=(northScale*northPos)+northOffset,  (6)

in which “EastTransform”, “eastScale”, “eastPos”, and “eastOffset”correspond to a horizontal axis of the map view, and “NorthTransform”,“northScale”, “northPos”, and “northOffset” correspond to a verticalaxis of the map view.

The data exploration system 100 supports two kinds of transform, namely,a layer transform and a unit transform. Scale and offset parameters foreach may be defined for point layers. Specifically, a layer transformcan be used to transform each point unit position on a map by applyingthe scale and offset parameters to each unit directly, according toequations (5)-(6). The actual parameters used are taken from a pointlayer in the map that the user designates as the layer transform layer.A unit transform can be used to transform each point unit position onthe map, centering the display on a designated unit. This unit is calledthe transform unit. Transform units are designated via the Transformmenu button on the popup menu window displayed by right-clicking on apoint symbol (see, e.g., the popup menu window 702 of FIG. 7). The layerthat includes the transform unit is called the unit transform layer. Itsunit transform scale and offset parameters are used to perform thetransform. In unit transforms, the offset parameters specify theposition of the transform unit in the transformed map display. In thisexample, the default offset parameters are eastOffset=5.0 andnorthOffset=5.0, which position the transform unit at the center of thetransformed map. The formulae for unit transforms to go fromuntransformed to transformed unit coordinates can be expressed as

EastTransform=(eastScale*(eastPos−eastUnit))+eastOffset  (7)

NorthTransform=(northScale*(northPos−northUnit))+northOffset  (8)

in which “EastTransform”, “eastScale”, “eastPos”, “eastUnit”, and“eastOffset” correspond to the horizontal axis of the map view, and“NorthTransform”, “northScale”, “northPos”, “northUnit”, and“northOffset” correspond to the vertical axis of the map view.

FIGS. 16 a-16 b and 17 depict an example of using a layer transform.FIG. 16 a shows the USNetwork map with all units collapsed under theRegions layer. The background image is exposed, showing a map of theUnited States. FIG. 16 b depicts the application of a layer transform tothis view, transforming unit positions so that the “rest of the world”is now exposed. For clarity, a different background image, e.g., a worldmap, has been substituted for the map of the United States. Unit symbolsfor different countries are now in the field of view. These units are inthe layer whose layer transform was applied. These units are theendpoints of trunks going to these countries from the USNetwork. Itshould be noted that FIGS. 16 a-16 b depict two views of the same map.Just the scaling and background images have been changed. FIG. 17depicts the effect of collapsing the Regions layer. Having the entireUSNetwork represented by a single symbol illustrates the relationship ofthe USNetwork to networks in other countries.

FIGS. 18-21 depict an example of using a unit transform. FIG. 18 depictsthe USNetwork, and FIG. 19 depicts the corresponding layer tree in theLayers and Rendering window. The depiction of the USNetwork in FIG. 18is similar to that in FIG. 3 (i.e., the Regions layer is hidden, and theCities and Trunks layers are shown), but the Switches and Ports layershave now been promoted in the layer hierarchy so that their units are nolonger collapsed under their cities. There are seven switches in eachcity. They are depicted as small square symbols surrounding each citysymbol. Each switch has 40 ports, located just below each switch symbol.The map is too cluttered at this scale—the switches overlap the citiesand the ports are piled on top of each other.

FIG. 20 depicts the same map as FIG. 18 after a unit transform has beenapplied, using CHI 2002 as the transform unit. This makes the Citieslayer the unit transform layer. The map has been re-scaled to show justthe region around CHI. The CHI symbol 2002 is centered towards the topof the map. Its seven switches 2004.1-2004.7 are arranged around it, andeach switch's 40 port symbols 2004 a-2004 g are now clearlydistinguishable. Trunks are clearly shown to terminate on individualports, including trunks between switches within the same city (CHI).

FIG. 21 depicts the same map as FIG. 18 after another unit transform hasbeen applied, using one of the switches CHI.S2 2004.7 as the transformunit. This makes the Switches layer the unit transform layer. Its unittransform parameters scale the map to greater detail, so that theindividual switch 2004.7 and its 40 ports 2004.g fill the display area.

The Transform Registration window (see FIG. 22) is used to define thescale and offset parameters for layer transform and unit transform forpoint layers on a map. When the Transform Registration window is active,five special transform registration units are added to the map. FIG. 23depicts the USNetwork map with the five special registration units intheir initial positions.

To define transform parameters, the user selects a layer on theTransform Registration window (see FIG. 22), and positions the specialtransform registration units by editing the map and dragging them. Oncepositioned, as described below, the appropriate Define button (Definelayer transform, Define unit transform) on the Transform Registrationwindow is used to define the transform on the selected layer.

The special transform registration units are defined as follows.

BeforeTransform-1—the position of unit 1 before the transform occurs.

AfterTransform-1—the position of unit 1 after the transform occurs.

BeforeTransform-2—the position of unit 2 before the transform occurs.

AfterTransform-2—the position of unit 2 after the transform occurs.

TransformUnitPosition—the position in the map where the transform unitshould appear when the unit transform is in effect. The default positionis the center of the map, but it can be placed anywhere by draggingTransformUnitPosition (see FIG. 23). The rest of the map will becentered around this position when the unit transform is in effect. Itis noted that TransformUnitPosition is ignored for layer transforms.

The term “rendering” refers to the appearance of a unit's representationin a view. On map views, point units are rendered as symbols drawn atthe unit's position. The appearance of these symbols depends on severalcharacteristics, such as its shape, size, color/shade, and the font ofits label. The term “rendering attribute” is used for a particularcharacteristic that determines how a unit is rendered. Size andcolor/shade are two rendering attributes. On map views, connection unitsare rendered as lines connecting two endpoint units. Their renderingattributes include type (solid/dashed), width, and color/shade.

In the USNetwork map examples described above, point and connectionunits have been rendered in a default mode that causes all units in thesame layer to be rendered the same way. For example, as shown in FIG. 3,all cities are rendered as gray ovals and all trunks are rendered assolid black lines having a 2 pixel width. The data exploration system100 can render units on maps based on the data associated with theunits. This means that expressions of the rendering attributes can beset based on the underlying data values. Units in the same layer withdifferent data values can be made to look different. FIG. 24 depicts themap of the USNetwork, but the cities and the trunks are now renderedbased on data as follows.

City size—the larger cities carry more traffic.

City shape—the rounded rectangles are gateway cities; they connect tocities in other regions or to other countries. Ovals are not gateways;they connect to cities within the same region.

City color/shade—the cities in the same region have the samecolor/shade.

Trunk width—this is used to show the trunk type, which in this contextmeans capacity. For example, OC3 is 1 pixel, OC12 is 4 pixels, and OC48is 12 pixels.

Trunk color/shade—this is used to show the trunk status. For example,green is good, yellow is marginal, and red is bad.

Although rendering based on data is particularly useful on map views, itis also available on tree and table views. TABLE I below describes therendering attributes that can be varied with data for each type of view(“N/A” means the rendering attribute is not available on that viewformat).

TABLE I Rendering attribute Map Tree Table Color Color/shade Color/shadeBackground shade of symbol or of node icon. color/shade connection. ofcell. Line Width and Width and N/A type of type of connection connectionline or icon. symbol border. Symbol Symbol shape. Icon shape. N/A SizeSymbol size. N/A N/A Font Label font, Node label Text font, style, size.font, style, style, size. size. TextColor Label color. Node label Textcolor. color. Hide Completely N/A N/A hide symbol. HideLabel CompletelyN/A N/A hide label.

Rendering based on data is controlled as follows. First, data bins aredefined for individual layer data columns. These are called “binninglevels”. Each binning level for a layer data column associates a levelnumber with a data range or match criteria that determines if aparticular data value in that column is in that bin. Next, for eachlayer in a view, a column's binning levels can be associated with theappearance of a particular rendering attribute (color/shade, size,etc.). The specific appearance of a rendering attribute for a specificbinning level is called a “rendering level”. For example, as shown inthe Layers & Rendering window of FIG. 25, the binning level for OC48 inthe “Type” column in the Trunks level is 3. The “Line” renderingattribute for the Trunks layer is associated with this column. The Lineappearance associated with rendering level 3 is solid having a width of12 pixels. Both binning levels and rendering levels can be controlledvia the Layers & Rendering window.

Specifically, the Layers & Rendering window (see FIG. 25) includes twopanels, namely, the Layers panel 2502 and the Rendering panel 2504. Theupper part of the Layers panel shows the view's layers in a treestructure (the layer tree 2506) that controls the hierarchicalrelationship of the layers in the view. The buttons to the right of thelayer tree control layer wide operations on these layers that are notdirectly involved with rendering. It is noted, however, that selecting alayer in the layer tree makes it the target of layer operations on thewindow, including the binning level and rendering operations.

The columns table 2508 shows the columns in the selected layer.Selecting a column in the columns table makes it the target of columnoperations on the window, including defining binning levels. The binningtable 2510 includes the binning levels of the selected column. Buttonsnext to the binning table are used to maintain the binning levels.Selecting a binning level makes it the target of these operations, andalso the target of rendering operations on the Rendering panel.

The Rendering panel 2504 includes a separate tabbed panel for eachrendering attribute available for each view format (map, table, ortree). Table I above lists the rendering attributes used for each viewformat. Maps use all eight kinds of rendering attributes, hence thereare eight tabbed panels (Color/shade, Line, Symbol, Size, Font,TextColor, Hide, and HideLabel) shown in FIG. 25. The illustrativeLayers & Rendering window of FIG. 25 exposes the “Line” tabbed panel,but it is understood that the other tabbed panels are similar.

The upper part of the Rendering panel includes radio buttons (Don'tRender, Render on Column, Highest Level in Record) used to select howlayer data is to be used to render its representation on the view. Thisis called the rendering mode. “Don't Render” means do not use databinning levels at all. Each unit is represented using its default (e.g.,Level 0) appearance. “Render on Column” means use data from a singlecolumn to render the attribute. “Highest Level in Record” means use thehighest binning level of any of the unit's columns to render the data.Below the radio buttons are fields (Trunks, Type) indicating which layerand column is to be used to render the attribute when “Render on Column”is in effect.

The lower part of the Rendering panel includes a table 2512 showing therendering levels for the particular rendering attribute for the selectedlayer. The buttons (Generate, Clear, Anchors, Level 0) next to the table2512 are used to maintain these rendering levels. In the “Don't Render”mode, the level 0 attribute is used for all units in the selected layer.In the “Render on Column” mode, the rendering attribute's renderinglevels are determined using the binning levels from the selected layerand column. In the “Highest Level in Record” mode, the renderingattribute's rendering levels are determined using the highest binninglevel of any column in the unit's data record.

Rendering based on data is configured and invoked by performing thefollowing steps. It is noted that that these steps do not have to beperformed each time rendering is defined. For example, once binninglevels or rendering anchors have been defined, they can be used over andover again. Also, they do not all necessarily have to be performed inthe order described. For example, rendering anchors can be definedbefore binning levels are defined. However, all of the steps arenecessary to render units on a view based on data binning levels.

First, on the view's layer panel of the Layers and Rendering window,select a data layer and a column to use for rendering. Next, the binninglevels are defined for the selected data column. All units in the layerthat have a value in the same bin will have a rendering attributerendered the same way. Each binning level includes the following:

Level number—a number that orders this binning level with respect toother binning levels defined for this column.

Match criteria—for numeric and date column types (e.g., Integer, Double,Date, Time, DateTime), the match criteria defines a lower and an upperbound for the binning level. For most other types (e.g., String,Boolean, Parent types), the match criteria defines a specific value tomatch.

Descriptive label—a label used to describe the binning level in legends.

Binning levels can be defined individually, or they can be automaticallygenerated based on the column's data itself. In addition, individualbinning levels can be modified. The following are three ways ofautomatically generating binning levels from a column's data:

Discrete Values—generate a separate binning level for each discretevalue in the column.

Interval & Range (numeric data types only)—generate binning levels of agiven interval spanning a given range from low to high. One or twoadditional binning levels can also be generated to pick up values eitherbelow or above the given range.

Fill In Levels (numeric data types only)—generate binning levels byinterpolating missing binning levels from those already there. Thisfills in missing levels by automatically calculating interval and rangesbased on the intervals that have already been defined. The levels thatfill each gap each have the same interval.

Binning levels apply to the layer the data column is in. Once defined,they apply to all views the layer is in.

On the Rendering panel 2504, a rendering attribute is then chosen toassociate with the selected layer and column. This is done by selectingthe appropriate tab (e.g., Color/shade, Line, Symbol, Font). Next, onthe selected tab for the rendering attribute, the appearance of thatattribute is defined to associate with a particular binning levelnumber. This is called a “rendering anchor”. Rendering anchors may bedirectly associated with each specific binning level, or they may bedefined to bracket a range of binning levels, anticipating that thesubsequent rendering level generation step will fill in the bracketbinning levels with interpolated or copied rendering attributeinstances. Rendering levels apply to the specific view. In other words,the same layer/column's binning levels can be rendered differently ondifferent views.

Next, the rendering levels to be used are generated for each binninglevel of the selected layer and column. This is done by clicking theGenerate button 2514 on the selected tab for the rendering attribute.When there is a rendering anchor for a given rendering level, it is usedfor that rendering level. When there as a gap, the rendering level isdetermined as follows. For the rendering attributes Color/shade, Line,Size, and TextColor, the rendering level is calculated by interpolatingbetween the rendering anchors that bracket the gap, proportional to therendering level. If there is no upper rendering anchor, then the lowerrendering anchor is copied. If there is no lower rendering anchor, thenthe Level 0 rendering instance is used for the rendering level. For therendering attributes Symbol, Font, Hide, and HideLabel, the renderinglevel is a copy of the lower rendering anchor. There is nointerpolation. If there is no lower rendering anchor, then the Level 0rendering instance is used for the rendering level.

If the “Render on Column” option is in effect for the view, then symbolsfor units in the selected layer are now rendered using the renderinglevels. If the “Highest Level in Record” option is in effect for theview, then symbols for units in the selected layer are now renderedusing the rendering levels in conjunction with levels from other columnsalready defined. It is noted that the “Don't Render” option causes theview to be rendered using the Level 0 rendering instances instead of therendering levels associated with data values.

Data can be further explored via the data exploration system 100 bysetting the positions of point unit symbols based on the underlying datathat each symbol represents. This is called “plotting”. The basicplotting operation used by the system can be thought of as making agraph of the data in a layer (e.g., a scatter plot) by plotting symbolpositions, using data from two layer columns for the east and northaxes.

Specifically, for each axis, a distance in map coordinate space iscalculated using the value from the data column to interpolate within aspecified map coordinate range. That range is set by specifying theminimum and maximum map coordinates of the range and the data valuesthat correspond to them. These range settings default to minimum andmaximum data values and almost the full map coordinate range.

Other kinds of arrangements can be made by plotting data from severallayers at the same time and by performing a series of plottingoperations with each layer (other than the first layer), producing anoffset from positions produced by the previous operation. It is notedthat the rearrangements of map views by plotting are still maps, i.e.,all other map functionality is still in effect, including rendering andshowing connection units as lines between point unit symbols.

FIGS. 26 a-26 b depict an example of the basic system plottingoperation, plotting point unit symbols from a single layer and usingdata from two columns. In this example, the Switches layer is plotted onthe USNetwork map. Plotting is used to explore whether there is arelationship between the amount of traffic carried by a switch and thenumber of errors it detects. FIG. 26 a depicts the map before plotting.All layers are hidden except for the Switches layer. FIG. 26 b depictsthe switches plotted to new positions. The vertical axis corresponds to“Errors” and the horizontal axis corresponds to “Traffic”. Defaultscaling is used for both axes, using data minima and maxima to plot thesymbols to almost the full size of the map. A labeled grid is alsoshown.

It should be understood that all map view operations are still availableafter plotting has been performed. FIG. 27 illustrates this by depictingthe same map as FIG. 26 b with the switches plotted in the same way,except that the rendering mode is set to “Rendering On Column” (insteadof “Don't Render”) and the switch labels are shown. The switch size isdependent on the traffic (which is the same column used for thehorizontal axis of the plot, so the larger symbols are to the right).The switch color/shade indicates the switch status.

By sequencing together several plotting operations, the data explorationsystem 100 can generate compound plots. FIG. 28 depicts a Plot Controlwindow used to control a map view's plotting. On the Plot Controlwindow, plotting is controlled by named entities call “plotcontrollers”. A plot controller controls the horizontal and verticalplotting of units in one or more layers, based on the data columns inthose layers. The Plot Control window allows the viewing and setting ofthe parameters associated with a selected plot controller. The PlotControl window of FIG. 28 has the following four sections:

Plot controller section 2802—used to select the plot controller that thewindow is currently working with. Buttons are provided to create newplot controllers and to remove existing ones. Another plot controllercan also be designated as the “Prior Controller”, which causes that plotcontroller's plotting to be performed automatically before the currentplot controllers plotting is performed. This allows complex “compoundplots” to be constructed.

Plot section 2804—controls the current plot controller's actualplotting. The plot section allows the picking of how each axis isplotted, and detailed control of certain details of the plotting such asthe type of grid used. It also has buttons to cause the plot to beperformed and to be returned to original “unplotted” positions.

Master layer section 2806—controls the layer(s) whose data is used toperform the plotting done by the current plot controller. One layer isdesignated as the “master layer”. Its data column definitions controlthe details of how data is plotted on each axis, including theassociation of a data range with map coordinates. It is the masterlayer's columns that may be selected for plotting on either thehorizontal or the vertical axis. Additional layers can also be plotted,using columns having the same name as the columns in the master layer.Buttons are provided to add and to remove plot layers from the plotcontroller.

Supplemental layer section 2808—extra layers may be designated to beread when plots are performed, and also when restoring originalpositions. These supplemental layers are not “plotted” per se. Rather,they are simply read, which allows other activities to be performed atthe time of plotting and restoring such as changing connectionendpoints.

The plot controller section 2802 of the Plot Control window uses thefollowing fields and buttons to select and to maintain the plotcontroller used by the associated map:

Current Plot Controller picklist—shows the name of the plot controllerthat the Plot Control window is currently set to. All other plotcontrollers are in the picklist. Picking one causes the Plot Controlwindow to use it. A “Use default” pick causes the default plotcontroller for the associated map to be selected.

Prior Controller picklist—names the plot controller that should beplotted (or original positions restored) before plotting (or restoring)according to the current plot controller. This allows sequences of plotsto be constructed. All plot controllers (except the current one) are inthe picklist. The blank choice clears any prior plot controller.

New Controller button—allows a new plot controller to be created. Theuser is asked for a unique name. It will be initialized with the samelayers as the current plot controller.

Remove button—removes the current plot controller completely from thesystem, including removing it from any maps that may currently be usingit, or any other plot controllers that reference it.

The plot section 2804 of the Plot Control window uses the followingfields, buttons, and checkboxes to control the actual plotting done bythe current plot controller:

Vertical axis and Horizontal axis picklists—used to pick the column tobe plotted on the particular axis. The columns available for both axesare all of the plotable columns in common between the master layer andthe other plot layers for the current plot controller (but notsupplemental layers). Plotable columns are Double, Integer, Date, Time,DateTime, and Unit columns that have plotting enabled. There are twoadditional pick-list choices, namely, No change—unit positions along theaxis are unchanged during plotting, and Fixed map position—unitpositions for the axis will be constant, using the map coordinatespecified in the Set Fixed Map Position field. When a pick is made, thedata plot and grid for that axis are immediately changed.

Grid type picklist—selects the type of grid to be displayed when data isplotted. Choices include Grid lines, Tick marks, and None. In the caseof plotting a sequence of plot controllers (using the Prior Controllerfield), one of the plot controllers' grids is used. It is the grid typedefined by the first plot controller in the sequence that uses a grid(grid type not “None”), and that does not use “Incremental plot”.

Set Fixed Map Position button and field—allows the fixed map coordinateposition to specified, which is used when an axis is plotted using theFixed map position choice. It causes all unit symbols plotted by thecontroller to use the same map coordinate for that axis, creating a row(fixed vertical position) or column (fixed horizontal position) ofsymbols. In one embodiment, the full map coordinate range for each axisis 0-10.

Local positions checkbox—controls the scope of position changes duringplotting and restoring positions. When unchecked, changes occur on allmaps not in the local positions mode. When checked, changes affect onlythe associated map. This field has substantially the same function asthe “Local positions” checkbox on the Map Display Control window.

Incremental plot checkbox—when unchecked, units are positioned asabsolute positions using the plot parameters. Checking causes plottingto be incremental offsets along each axis from each unit's currentposition. Can be used in conjunction with the “Prior Controller”picklist. Incremental plot allows complex compound plots to beconstructed.

Use each layer's parameters checkbox—when checked, units in non-masterplot layers are plotted using their own plot definition parameters (Plotdata range, Plot map range). When unchecked, the master layer'sparameters are used for all plot layers in the plot controller.

Use master layer's positions checkbox—when checked, units in non-masterplot layers are positioned to the same position as their parent unit inthe master layer (if any). Positions of master layer units areunchanged. This operation is done instead of plotting units based ontheir data columns. This is useful for setting up incremental plots in asequence when units are to be offset from their parent units.

Re-plot button—plots are executed when an axis column is picked orcolumn parameters are changed using the Column definition window. TheRe-plot button causes the currently defined plot to be executed again,which is necessary when other parameters are changed, or originalpositions are restored. Supplemental plot layer files are also read.

Restore Original Positions button—causes units in the plot layers to berestored to their original “unplotted” positions by reading layer filesfor each layer that define their positions. Supplemental restore layerfiles are also read.

The Master layer section 2806 of the Plot Control window uses thefollowing fields and buttons to select the layer(s) whose data is usedto perform the plotting done by the current plot controller:

Pick master layer picklist—displays the name of master layer. This isthe layer whose data column definitions control the details of how datais plotted on each axis, including association of data range with mapcoordinates. The other plot layers whose data are plotting according tothese parameters along with the master layer are in the picklist.Picking one makes it the master layer.

Define Master Layer Columns button—brings up a Define Layer Columnswindow for the master layer, which permits control of plot parametersfor each column. After changing plot parameters, the Re-Plot button canbe used to change the plot itself.

Add Layer button—allows plot layers to be added to the current plotcontroller. The user is presented with a list of eligible layers toselect from. The selected layer is added to the Pick Master Layerpicklist. Axis columns are adjusted to make available columns in commonbetween all plot layers now in the current plot controller (includingthe layer just added).

Remove Layer button—allows plot layers to be removed from plotcontroller. The user is presented with a list of the currentcontroller's layers to select from. If the master layer is removed, thenone of the remaining plot layers (if any) is arbitrarily selected asmaster layer.

The Supplemental layer section 2808 of the Plot Control window uses thefollowing fields and buttons to select the supplemental layer(s) to beread when the current plot controller performs its plot and when itrestores original positions:

Supplemental layers read when plotting picklist—displays names of layerswhich are re-read when the current plot controller's plot operation isperformed. When blank, no supplemental layers are read during plotting.

Add Layer button—adds an additional supplemental plot layer to thecurrent plot controller. The user is asked to pick a layer from a listof eligible layers.

Remove Layer button—removes a supplemental plot layer from the currentplot controller.

Supplemental layers read when restoring positions picklist—displaysnames of layers which are re-read when the current plot controller'srestore original positions operation is performed. When blank, nosupplemental layers are read while restoring positions.

Add Layer button—adds an additional supplemental restore layer to thecurrent plot controller. The user is asked to pick a layer from a listof eligible layers.

Remove Layer button—removes a supplemental restore layer from thecurrent plot controller.

A sophisticated plot example, referred to herein as a “Trap Map”, isshown in FIG. 29. The Trap Map explores a different aspect of the samenetwork data used in the USNetwork map.

Specifically, as events occur in a network, devices such as switchesproduce messages that announce what has happened. These messages aretypically called “traps”. Originating from the switches themselves,traps are received by the management system that monitors the network.Information in each trap message includes its source (e.g., the switch),when the trap was sent (e.g., a date/time stamp), and what happened(e.g., a code). As major events occur in a network (perhaps caused bythe proliferation of a virus), many traps can be generated from manyswitches. Their interpretation can be challenging. The USNetwork used inthis illustrative example has 168 switches that together produced over8,000 traps in a single day.

The data exploration system 100 can be used to sort through the Trap Mapshown in FIG. 29. Specifically, each switch 2906 is a separate row onthe map. They are grouped by Region 2902 and City 2904. The symbolsrepresenting each region 2902, city 2904, and switch 2906 appear on theleft side of the map. The small rectangular switch symbols 2906 arestaggered horizontally within each city to minimize their overlap. Eachtrap is represented by a black dot symbol in the same row as the switchthat generated it. The horizontal axis for the traps is the Date/Timethe trap was generated. In other words, Trap Map shows the distributionof 8,000+ traps over source and time.

As shown in FIG. 29, patterns emerge from the data plot. For example,about 10% into the day (corresponding to the approximate time indicatedby numeral 2908), something happened on a single switch that caused itto generate many traps. Frequent trap generation spread to otherswitches, first within the same city, then to other cities in otherregions. But this view of the Trap Map could just be the start of aninvestigation. All of the data from each trap is available. The Trap Mapcan be rendered based on that data to show what event was represented byeach trap.

FIGS. 30 a-30 h depict a sequence of eight plot controller executionsused to make the compound plot of FIG. 29. Specifically, FIGS. 30 a-30 hdepict the progressive arrangement of unit symbols as each of the plotcontrollers was executed. It is noted that the user does not need toexecute all the steps separately. Instead, the last plot controller maybe invoked to make the plot. By way of the “Prior Controller” field (seethe Plot controller section 2802 depicted in FIG. 28), the entiresequence is executed at once, producing the final plot shown in FIG. 29.To show how the various plot features work together, each step issummarized below.

FIG. 30 a—original appearance of Trap Map, prior to plotting. Regions,Cities, and Switches are at their original positions, as viewed on theUSNetwork map examples. On the Trap Map, symbols are smaller, andregions are represented as squares rather than the horizontal rectanglesused on USNetwork map.

FIG. 30 b-regions are plotted to be arranged in a single column on theextreme left side of the map. A Fixed Position is used for thehorizontal axis and a sequence number (column RegionIndex) for thevertical.

FIG. 30 c—cities are relocated to the same positions as their parentregion. This plot operation uses the “Use master layer positions”feature (see the Plot section 2804 depicted in FIG. 28). It is notedthat the switches also change position in this step. This is because theswitches use the relative positioning option to be positioned relativeto the city that contains it. It is also noted that the switches stillhave the same relationship to the cities arranged around them.

FIG. 30 d—cities are positioned relative to the region that contains it.The Incremental plot option (see the Plot section 2804 depicted in FIG.28) is in effect. Each city is offset from its current position (theregion position). A Fixed Position is used for the horizontal axis. Thevertical axis is a sequence number (column RegionCityIndex). Theswitches move along with their cities, for the same reason as describedwith reference to FIG. 30 c.

FIG. 30 e—switches are relocated to the same positions as their parentcity. This uses the “Use master layer positions” feature (see the Plotsection 2804 depicted in FIG. 28).

FIG. 30 f—switches are positioned relative to the city that contains it.The Incremental plot option (see the Plot section 2804 depicted in FIG.28) is in effect. Each switch is offset from its current position (thecity position). A Fixed Position is used for the horizontal axis. Thevertical axis is a sequence number (column CityIndex).

FIG. 30 g—traps are relocated to the same positions as their parentswitch. This uses the “Use master layer positions” feature (see the Plotsection 2804 depicted in FIG. 28). The effect of this step is to cause ablack dot to be located on top of each switch symbol. The dot is thesymbol for all of the traps from that switch, stacked on top of eachother.

FIG. 30 h—traps are positioned relative to the switch that generated it.The Incremental plot option (see the Plot section 2804 depicted in FIG.28) is in effect. Each trap is offset from its current position (theswitch position). The horizontal position is offset by the trap time(“When” column). The vertical axis is “No change”.

The last step produces the final plot, as shown in FIG. 29. The switchesare offset horizontally to reduce the effect of overlap. The Incrementalplot option is in effect. The horizontal position is offset by asequence number (column CityIndex). The vertical axis is “No change”.

Tree views display data units in layers as nodes in a hierarchical treestructure. Node icons for point units are the same symbols available onmaps. Node icons for connections are vertical lines. The Tree viewemphasizes the hierarchical relationships between data in differentlayers, as expressed by the layer hierarchy, the parent/child datatypes, and the connectivity relationships.

The hierarchical structure of the tree can be arranged to show thehierarchical relationship between the units represented by the tree'snodes. The node hierarchy of the tree view is controlled by arrangingthe tree view's layer hierarchy, using the layer tree on the view'sLayers & Rendering window (see, e.g., the layer tree 902 depicted inFIG. 9). The layer tree is manipulated in substantially the same way aswith map views. When a layer (i.e., a child layer) is made subordinateto another layer (i.e., a parent layer) in the layer tree, nodesrepresenting units in the child layer are made subordinate to nodesrepresenting units in the parent layer. The mouse can now be used on thetree view itself to collapse and expand individual parent nodes, usingnormal Java tree functionality.

Parent/child relationships between units in parent and child layers aredetermined in two ways. First, parent/child relationships are expressedby parent data types (Parent, Owner, Relative, OwnerRelative) in thechild layer. This is the same as the parent/child relationships used onmaps. The connectivity relationships may also be employed. If the childlayer is a connection layer and the parent layer a point layer, thennodes representing connections in the child layer are shown as childnodes of nodes representing their endpoint units in the parent layer. Ifthe child layer is a point layer and the parent layer is a connectionlayer, then nodes representing point units in the child layer are shownas child nodes of nodes representing connections in the parent layerthat use them as endpoints. These relationships are described in greaterdetail below.

FIGS. 31 a-31 c depict two versions of a tree view called USTree. Asshown in FIG. 31 c, this tree view includes point layers Regions,Cities, Switches, and Ports. It also includes connection layer Trunks.The layer tree has been arranged to completely collapse the hierarchy ofthese layers, i.e., the trunks under the ports they are connected to,the ports under their switches, etc. FIG. 31 a depicts the nodescompletely collasped—no nodes are individually expanded. Only regionsare visible. Nodes representing the rest of the network are collapsedunder its particular regions.

FIG. 31 b depicts the USTree structure with several nodes individuallyexpanded. This is done by clicking the mouse on the node handle to theleft of each node that has subordinate nodes. The region NorthEast isexpended to show its cities. The city BOS is expanded to show itsswitches. The switch BOS.S1 is expanded to show its ports. The portBOS.S1$09_(—)01_(—)01 is expanded to show the trunk that is connected toit. Accordingly, as shown in FIGS. 31 a-31 c, Cities, Switches, andPorts can be collapsed using parent/child data relationships, and Trunkscan be collapsed using connectivity relationships.

FIGS. 32 a-32 b depict the same tree view USTree as that shown in FIGS.31 a-31 c. As shown in FIG. 32 b, the layer tree has been changed topromote the Cities layer, which is no longer subordinate to the Regionslayer. Switches, Ports and Trunks are still collapsed, as in FIG. 31 c.The tree view of FIG. 32 a shows this change. Nodes for both Regions andCities are visible. Nodes for everything else are hidden—they arecollapsed under their appropriate city. No nodes are individuallyexpanded.

FIGS. 33 a-33 b depict a tree view called TrunkTree. As shown in FIG. 33b, it includes two layers, Trunks and Ports. The hierarchy is arrangedto make the Ports subordinate to the Trunks. This utilizes theconnectivity relationship to show the endpoints (ports) of connections(trunks). The nodes in the tree of FIG. 33 a show this relationship.Trunks are visible. Their ports are collapsed below them. Two of thetrunks are individually expanded (CHI_NY_(—)01 andCHI.S1_CH.S2_edge_(—)01), each showing its endpoint ports.

As with map views, right clicking the mouse on a unit's node causes itsassociated data to be displayed on a popup menu window. This popupwindow includes the unit's name, layer, and name/value pair for eachdata field. FIG. 34 depicts the USTree tree view with a popup datawindow 3402 displaying the data associated with city “DEN”.

Tree view nodes can be rendered based on data. This feature iscontrolled in substantially the same way as map views. The renderingattributes that can be controlled include the icon color/shade, the iconsymbol type (point units only), the icon line width (connection unitsonly), and the label text color/shade. FIGS. 35 a-35 b depict the treeview USTree in the “Render on Column” mode.

Table views display data units as rows in a table. Table columns showthe layer's data associated with each unit in the table. FIG. 36 depictsa table view named Cities, displaying the Cities layer. Table views arenormally used to view a single layer of data. They can view multiplelayers at the same time. In Table views, the layers are of the same type(point or connection) and have the same column structure (all columnshave the same name, data type, and order). This is different from mapand tree views, which have no similar restrictions on the layers theycan contain.

The columns displayed on the table view can be rearranged as follows.First, the Table column display order can be adjusted by dragging thecolumn header to a new column position. This has no effect on the orderof columns in the underlying layers, just how they are displayed. Columnwidths can then be adjusted by dragging the separator between columnheaders. Clicking the mouse on a table view's column header (containingthe column name) sorts the table by that column. Repeated clicks on thesame column toggles between ascending and descending sort. Text columnsare sorted alphabetically, numeric columns numerically. Cells withmissing data sort “less than” than non-missing data. FIG. 37 depicts thesame table view Cities as shown in FIG. 36, except it has been sorted bythe column “Traffic”.

Table view cells can be rendered based on data. This feature iscontrolled in substantially the same way as the map views. The renderingattributes that can be controlled include the following:

Color/shade—background color/shade of the table cell.

Font—font type, style, and size of the data value's text.

TextColor—Color/shade of data value's text.

FIG. 38 depicts the same Cities table view as in FIG. 37, sorted in thesame way. It is rendered based on data.

When in the edit mode, the table cell values can be edited. Doubleclicking on a cell makes its text editable. For data types that supportmissing values (Double, Integer, Boolean, Date, Time, DateTime), editingin the keyword “missing” causes that cell's data to be set to missing.Once valid changes have been made, they replace the original value bothin the cell and in the underlying data layer. All views that displaythat data will be updated, including all renderings based on data.

The data exploration system 100 provides features that permit views tobe created, saved, organized, and cooperatively explored. Views arecreated from the system's Main Window (see FIG. 39), which also providesoverall program control. Several other features are provided that allowmultiple views to be examined at the same time, and which allowoperations on one view to produce an effect on other views.

After system initialization, the main system window is displayed. Thiswindow is normally present during system operation. Menus provide theoverall system control, including the following:

a. Input of projects, and saving current work as a project. A projectincludes all views and references to all layers that were active withinthe system at the time the project was saved.

b. Creating new views (Maps, Tables, Trees).

c. Using the help system.

d. Invoking custom Add On functionality.

e. Terminating system operation.

FIG. 39 depicts the system main window. It has three tabbed panels, onefor each kind of view—Map 3902, Table 3904, and Tree 3906. System menusprovide access to the system functions. Specifically, the File menuprovides the following functionality:

Read project—read a project file. This inputs all views and layerspreviously saved. This is normally the first thing that it done afterstarting system operation.

Save project—save all current views (attached and detached) and layersto a project file and associated layer files.

Add on: custom menu choices (if any)—Optional menu choices that invokecustom functionality integrated with the system. “Add on” functionalitycan be used to prepare data in an application specific manner.

The Edit menu provides choices that control system configurationoptions.

The Views menu can be used to create new views, adding them to theappropriate tabbed panel. An empty view is created and placed on a tab,where it then may be individually loaded with data layers andconfigured. The Views menu provides the following functionality:

Add map—create a new map view. The user is asked for a unique map name.Empty new map appears as a map tab.

Add tree—create a new tree view. The user is asked for a unique treename. Empty new tree appears a tree tab.

Add table—create a new table view. The user is asked for a unique tablename. Empty new table appears as a table tab.

The Help menu provides the following functionality:

Help window—brings up a new Help window, which provides informationorganized by Terms, Topics, and Windows.

Disable tool tips—user interface components have “tool tips” associatedwith them, which is a short phrase describing the component. Whenenabled, the tool tip is automatically displayed when the mouse lingersover the component. “Disable tool tips” disables the display of tooltips. When disabled, this menu choice changes to “Enable tool tips”,which re-enables them.

The Main window has a tabbed panel for each kind of view. If more thanone instance of the same kind of view is on the tabbed panel, thenclicking the mouse on a view's tab puts that view “on top”, so that itcan be seen by the user and worked with.

It is noted that one instance of each kind of view can normally be seenby the user at any time. For example, as shown in FIG. 39, the mapUSNetwork 3902, the tree USTree 3906, and the table Switches 3904 arevisible, and all other views are hidden. It may sometimes be desirableto view two maps at the same time so that related arrangements can bedirectly compared. The data exploration system 100 allows thisflexibility by providing the option to display individual views in theirown standalone windows. When a view is on a Main window tabbed panel,clicking its Detach button causes that view to be removed from thattabbed panel and placed in its own standalone window. This is called“detaching the view”. It can now be sized and viewed along with anyother active windows. When detached, the button text changes to“Attach”. Clicking the Attach button restores the view back on theappropriate Main window tabbed panel, removing the standalone window.This is called “attaching the view”. For example, the views in FIG. 39are attached, and the views in FIG. 3 are detached.

Clicking the mouse on a unit's representation on a view causes thatrepresentation to be selected, thereby causing the representation to behighlighted. On map views, highlighting is accomplished by placing a“halo” around the unit's map symbol. On table views, it is accomplishedby giving highlighted rows a different color/shade background. On treeviews, it is accomplished by giving labels of highlighted nodes adifferent color/shade background. Normally, selecting a unit in a viewhighlights it only in that view. However, checking the “Propagateselects” checkbox on a view's Layers & Rendering window (see FIG. 9,above the layer tree 902) causes the same unit to be selected in allother views that show the unit. This feature is called “propagateselects”.

The Propagate selects feature allows units to be located on multipleviews, thereby tying information together. This is particularly usefulwhen selecting a range of units (rows) on table views that have beensorted. FIGS. 40 a-40 c depict an illustrative example. Table Cities(see FIG. 40 a) has been sorted by Traffic, and the five cities havingthe most traffic have been selected. The selects are propagated to map(see FIG. 40 c) and tree (see FIG. 40 b) views of these cities.

A property of each point unit is its map coordinate position. On mapviews, this position is used to place the symbol representing the pointunit. This position is a property of the unit. As a default, if theposition is changed, then the location of the symbols representing thisunit on all map views also change.

The “local positions” feature (see the plot section 2804 of the PlotControl window in FIG. 28) allows point units to be repositioned on anindividual map view (the local map) without changing the overallposition of the point unit. This allows the unit symbols to bepositioned on the local map view differently than on other map views. Italso keeps the positions on the local map from being changed when unitpositions are changed on other map views.

FIGS. 41 a-41 b depict how local positions permit side-by-sidecomparisons of data, using different positioning of the same units. Twomap views are shown, namely, USNetwork (see FIG. 41 a) andUSNetworkWorld (see FIG. 41 b). Each is displaying the Switches layer.USNetwork (FIG. 41 a) depicts the switches at their overall unitpositions, which clusters them around their city locations.USNetworkWorld (FIG. 41 b) uses local positions. The switches areplotted to positions based on Errors versus Traffic. Both of these mapviews exist at the same time. This is illustrated using the propagateselects feature to select all switches with high errors but low traffic,and having USNetwork show how these switches are distributed over thenetwork.

Data is organized by layer data when data is brought into the dataexploration system 100 from an outside source, and when it is added toindividual views. The following describes how layers are created,defined, read from outside sources, and saved. The Layer I/O window isfirst described because it is the primary user interface component forhandling layer maintenance. Major layer maintenance features are thendescribed.

The Layer I/O window (see FIG. 42) is the primary user interfacecomponent for handling layer maintenance. It is brought up by clickingthe Layer I/O button (to the right of the layer tree 902, see FIG. 9) onthe Layers & Rendering window. The Layer I/O window has three majorfunctions, specifically, to select layers to be added and removed fromthe associated view, to add new layers to the system as a whole (eitherby reading them from an outside source or by creating and defining themfrom scratch), and to save existing layers to outside files, includingoptions to save layer configuration, unit positions, and data.

FIG. 42 depicts an exemplary Layer I/O window. It is associated with theUSNetwork map view. The Layer I/O window has two sections, the Pick Viewsection 4202 and the Select layers section 4204. The Pick View section4202 governs the list of layers made available for selection in theSelect layers section. The Pick View section 4202 includes a tablehaving all views currently active in the system, plus an additionalfirst row called “All Layers”. The layers included in the selected vieware listed in the Select layers field below. If All Layers is selected,then all layers active in the system are listed, regardless of whichviews use them. The Pick View table 4202 includes the following threecolumns:

View—the name of view, or All Layers.

Type—the type of view, i.e., Map, Table, or Tree.

# Layers—the number of layers in the view. The All Layers row shows thetotal number of layers active in the system.

The Select layers section 4204 lists the layers to be selected, andincludes buttons to associate them with the corresponding view and withoutside data sources. The Select layers field lists layers eligible forselection, as controlled by the Pick View table above. There are threegroups of buttons, each having a related set of functions. The threebutton groups include the following:

Select All button—selects all layers in the Select layers field.

Clear button—clears all selections in the Select layers field.

Layer maintenance buttons—buttons that allow layers to be created, readfrom outside sources, have columns defined, saved to files, andcompletely destroyed.

Layer to view buttons—buttons that add selected layers to or removeselected layers from the associated view. Each button also closes theLayer I/O window.

Add button—adds selected layers to the associated view.

Remove button—removes selected layers from the associated view.

The layer maintenance buttons on the Layer I/O window allow layers to becreated, defined, loaded with data, saved for later use, and destroyed.The Layer maintenance buttons include the following:

Read Layer button—read data from an outside source into the system, ascontrolled by a layer definition file. The File chooser window is usedto select the layer definition file. The actual source of the layer'sdata and the positions themselves are determined by the contents of thelayer definition file.

For example, the data sources can be delimited text spreadsheet files ordatabases implementing the Java database connectivity (JDBC) interface.

A layer definition file includes the layer's configuration, except foractual unit data and unit positions. This includes the layer's columnstructure, binning levels, default rendering attributes, columnparameters, default initial states when added to views, and pointers tosources of data and position information itself.

It should be noted that when a “Read project” function is performed fromthe Main window (File menu), a read layer operation is performed on alllayers included in the project. Separate Read Layer button operations donot have to be performed.

Create Point Layer button—create a brand new layer for point units. Theuser is asked for a unique name for the new layer. The newly createdlayer is initially empty and does not yet have data columns.

Normally, the next step after creating a layer is to use the DefineColumns button to bring up a Define Layer Columns window to add datacolumns to the new layer.

Create Conn Layer button—create a brand new layer for connection units.This button works in substantially the same way as the Create PointLayer button.

Define Columns button—brings up a Define Layer Columns window to definethe selected layer's column structure and parameters.

Define Sources button—brings up a Define Layer Data Source window topick the actual external data source for the selected layer's data. Forexample, data sources may be delimited spreadsheet files or databasesimplementing the JDBC interface.

Save Layer button—saves the selected layer to a layer definition file.The user is asked to select a specific layer definition file; thedefault is the current layer definition file that will be overwritten(after confirmation). It is noted that the layer's definition is saved,not layer's positions or data. This is what needs to be saved mostfrequently. The Save Positions or Save Data buttons should be used ifeither positions or data needs to be saved.

It is further noted that when a Save project function is performed fromthe Main window (File menu), a save layer operation is performed on alllayers currently active in the system—their layer definition files areall updated.

Save Positions button—saves the map positions of the selected layer'sunits. Positions are saved to a layer positions file. The user is askedto select the positions file. Positions files are automatically readwhen the layer itself is read.

Save Data button—saves the layer data of the selected layer's units.Data is saved to a delimited spreadsheet file, regardless of theoriginal data source of the layer. The File chooser window is used toselect the delimited text spreadsheet file. If the selected file isdifferent the layer's currently defined data source, then the user isasked if he or she wishes to make this the defined data source for thelayer (meaning that the data being saved will be read next time thelayer is read).

Destroy Layer button—completely destroys the selected layer. The userasked for a confirmation. The layer is completely removed from thecurrent session, including removing it from any views that currentlycontain it. Further, units included in the layer are also destroyedunless they are included in another layer. Any files associated with thelayer (e.g., layer definition files, positions files, data source) areuntouched.

Before creating a new layer, some planning and preparation steps areusually taken. These include gathering the data into an accessiblelocation and format for the data exploration system 100 to access.Although data can be entered directly into the system using its editingfunctionality, this may not be the primary source of the layer data.Layers are normally read from some outside source. The system can beused to read data from the following sources:

Delimited spreadsheets (.csv and .txt files)—spreadsheets should besaved in one of these formats. The layer data itself should be arrangedin contiguous columns and rows. The first row includes the name to beused as the layer column name for the column's data. Remaining rowsinclude the data itself. Columns do not have to be in the same order asthey will appear in the layer, and there can be extra columns in thespreadsheet, which will be ignored.

Database sources that support the Java JDBC interface—the systemconnects to the database from the platform on which it is running. Theuser needs to know how to identify the desired data in that database.This includes knowing the database table and column names of the data.

In the preferred mode of operation, the user plans how unit names are tobe obtained from the data. Unit names are typically found in a singledata column, but they can also be built from multiple columns usingeither an Owner column or a formula. The user also plans what data typeto use for each column in the layer. This includes understanding howdata in this layer will reference data in other layers using the parentdata types. In addition, the user plans how units in the layer are toobtain their positions within the system. For connection units, thistypically means how the unit will reference its endpoint point units byway of EndPoint and EndOwner columns. For point units, this normallymeans picking and performing one of the following techniques:

a. Position relative to units in another layer. Base units need to bereferenced in a Relative or OwnerRelative column. Offsets from that baseunit are normally defined in EastPos and NorthPos columns. In theillustrative USNetwork example, the Switches and Ports layers arepositioned in this way (Switches relative to city, Ports relative toswitch).

b. Position by map editing. This normally entails dragging the unitsymbol to a location consistent with a background image. This meansobtaining the background image (e.g., a .jpg or .gif file). In theUSNetwork example, Regions, Cities, and WorldCountries layers arepositioned in this way.

c. Position by plotting. If units are to be positioned as a function oftheir associated data, then no special preparation is needed at the timeof initial layer definition. The appropriate plotting operation will beperformed after the data is read into the layer. In the USNetworkexample, the Traps layer is positioned in this way.

d. Positions embedded in original data. The data may already haveassociated positioning information. For example, data that resides ingeographic information systems have associated geographic positioninginformation. Such information can be mathematically transformed tosuitable coordinates and placed in EastPos and NorthPos columns.

Next, the user plans whether the original source of the layer's data isto continue to be its source as the layer is used by the system inongoing work. Sometimes it is preferable to have ongoing work use a copyof the data, which can be accomplished by saving the layer's data afterit has been received from its original source. The user then decideswhat view to use when creating the new layer. New layers cannot becreated “on their own”. It is done from an existing view. Create a newview if necessary. New layers are typically created from either a map ora table. A table is preferred if the emphasis is on inspecting thelayer's data values directly once it has been read. A map is sometimespreferred if the emphasis in on positioning the data right away. Ineither case, the actual layer creation steps are substantially the same.

A new layer is created as follows. First, create a new empty layer. Onthe view's Layer I/O window (see FIG. 42), use either the Create PointLayer or the Create Conn Layer button. A unique layer name will berequested. The new layer should be added to the associated view usingthe Add button. Next, define the layer's columns. This is done from aDefine Layer Columns window (see FIG. 43), opened from the Layer I/Owindow using the Define Columns button. A column is added for eachcolumn the layer is to contain. The column names match their names inthe outside source. The data type is appropriate for the data. Further,at least one Unit column is defined. The Define Column window is alsoused to define other properties of the column. A special case is if thelayer has a column that is not to be found from the layer's data source,then a formula must be defined for that column.

The layer's definition is then saved. This is done using the Save Layerbutton on either the Define Layer Columns window (see FIG. 43) or theLayer I/O window (see FIG. 42). This saves the definition of the layer'scolumn structure. Next, the original data source is defined. This isdone using a Define Layer Sources window (see FIG. 44), which is openedfrom the Layer I/O window using the Define Sources button.

Data units are read into the layer from the Define Layer Sources window(see FIG. 44), or from the Layer I/O window using the Read Layer button(see FIG. 42). If the original data source is not to be the layer's datasource during ongoing work, the user can save a copy of the layer's datausing the Save Data button on the Layer I/O window. For example, thisdata can be saved to a comma delimited spreadsheet (.csv file), which ismade the current source of the data in the layer's definition.

The current system work environment can be saved as a project. This isdone using the Save Project menu choice on the Main window File menu.This saves the reference to the new layer, the current state of the view(now including the new layer), and the updated definition of the newlayer (including its source).

For point layers, the user can set the point unit positions either byediting or plotting. When set as desired, they should be saved using theSave Positions button on the Layer I/O window (see FIG. 42).

The Define Layer Columns window (see FIG. 43) is used to maintain thecolumn structure of a layer. Columns can be added, removed, andmodified. A layer's overall column structure consists of each column'stype, name, and position relative to the other columns. A column'sdetailed properties control how a column's data is calculated andplotted. The detailed properties may be changed even if the layerincludes data. Further, columns may be added and removed when the layerincludes data. However, a column's overall structure (type, name,position) can only be modified if the layer is empty.

As shown in FIG. 43, the Define Layer Columns window has two majorsections, the Layer columns section 4302 and the Column details section4304. The Layer columns section 4302 includes a table showing the order,name, and type of each column in the layer. Selecting a column makes itthe target of the column details section. The Layer columns section 4302includes an Add button, a Modify button, and a Remove button. The Addbutton can be used to add a new column to the layer. Clicking the buttonbrings up an Add Column popup window, which allows the columns name,position, and type to be entered. The Modify button allows modificationof the selected column's name, position, or type. Clicking the buttonbrings up a Modify Column popup window, which allows these attributes tobe modified. The Modify button is typically active for layers thatinclude no data. The Remove button removes the selected column.

The Column details section 4304 controls the detailed parameters for theselected column. This includes the parameters used to control plottingwhen the column is used for an axis, and a technique used to calculatedata fields during calculation operations. Each field is a picklist.Further, each field has a Use default choice that restores the defaultparameter setting appropriate for the columns. If there is no associatedSet button, making a pick causes it to immediately go into effect. Thosehaving a Set button require it to be used to put the parameter intoeffect. They are used for parameters that have multiple fields (e.g.,ranges), or that require typing values directly into the field.

The Define Layer Columns window also includes a Save Layer button 4306.Column detailed parameters are stored as layer parameters as part of alayer's definition. The Save Layer button is provided to allow changesto be conveniently stored.

As shown in FIG. 43, the column details section 4304 has a number offields used to control plotting. These fields are active for plottablecolumns. Plottable columns are of type Integer, Double, Date, Time,DateTime, and Unit. Specifically, the Plotting enabled field causes thecolumn to appear on axis picklists on the Plot Control window. Disablingprevents the column from appearing. The Grid intervals field relates tothe number of intervals that are divided by grid lines or tick marks onplots for the axis that uses this column. The number of grid intervalsis 1 greater than the number of lines that appear. This field can beused to set values other than those in the picklist. The Plot data rangefield relates to the range of the column's data (lower and upper values)used to plot column's data. The lower and upper values are thoseassociated with the specified map coordinate range. “Min” and “Max” areused to set the range to actual minimum or maximum values in the columnin the plot controller master layer. The Plot map range field can beused to map coordinates associated with the previously defined datarange values. The full range of the system is typically 0.0 to 10.0(unit-less numbers representing a fraction of map dimension) for eachaxis. The Missing surrogate field relates to values used in place ofmissing column data. When plotting a unit position, something needs tobe done for units having a missing value in the column used for an axis.This field allows the forcing of missing values to show up at a fixedand distinct location, or to plot outside of the map range.

The Summary and Formula fields are used to calculate data values. Theytake effect when the Calculate button (located to the right of the layertree 902, see FIG. 9) is used on the Layers panel of the Layers &Rendering window. Specifically, the Summary field can be used tosummarize a column's data, using either overall layer unit values orlayer summarization calculations. Available picks are based on thecolumn type. In general, arithmetical techniques are available for thenumeric column types (Double, Integer, Date). The Formula field relatesto a spreadsheet style formula used to calculate the value of data cellsin the column. When a formula is defined for a column, that column isnot required to be found in the layer's data source. Formulae includeoperators, column references, constants, keywords, and functions.Evaluation of the formula results in an appropriate value for a cell inthe column. There are three categories of formulae depending on columntype, as follows.

Numeric—column types are Integer, Double, EastPos, NorthPos.

Boolean—column type is Boolean.

String—column types are String, Parent, Owner, Relative, OwnerRelative,EndPoint, EndOwner.

Layers are read from an outside source into the data exploration system100 under the control of a layer definition file, which includes thelayer's configuration except for actual unit data and unit positions.This includes the layer's column structure, binning levels, defaultrendering attributes, column parameters, default initial states whenadded to views, and pointers to sources of data and position informationitself. In the presently disclosed embodiment, the layer definition fileis a delimited text file, either tabbed delimited (.txt) or commadelimited (.csv).

Layers can be read using the Read Layer button on the Layer I/O window(see FIG. 42). Specifically, a file choose window is used to select thelayer definition file. Layers are also read as part of performing a Readproject operation from the Main window (File menu). All layers includedin the project are read at this time, from layer definition files namedin the project file.

Although a layer definition file may include the layer's data itself, itnormally does not. Instead, the data is read from a separate datasource, which is pointed to by the layer definition file. Layer datasources are configured using the Define Layer Sources window, asdescribed below. The data sources include the following:

Text spreadsheets—tabbed delimited (.txt) or comma delimited (.csv)spreadsheet files that can be saved from spreadsheet programs such asMicrosoft Excel.

JDBC database—relational database or other source supporting the JDBCinterface. This includes most major relational database systems.

If positions for the layer's units have been saved using the SavePositions button on the Layer I/O window, the unit positions are storedin a separate file called a layer positions file. The layer definitionfile points to the layer positions file, and it is automatically read aspart of reading the entire layer. In the presently disclosed embodiment,the layer positions file is a delimited text spreadsheet file havingeither comma (.csv) or tab (.txt) delimiters.

FIG. 44 depicts the Define Layer Sources window that defines both textspreadsheet and JDBC database sources for layer Traps. As shown in FIG.44, the Define Layer Sources window has three major sections 4402, 4404,and 4406. Two of these sections 4402, 4404 can be used to configure thedata source types, e.g., text spreadsheets and JDBC databases. If bothare configured, the Text Spreadsheet data source takes precedence whenthe layer's data is read. The third section 4406 allows informationreference information to be entered about the layer and its originalsource. Specifically, the sections are as follows.

Text Spreadsheet—configures text delimited spreadsheet files. These areeither comma delimited files (.csv files) or tab delimited files (.txtfiles).

JDBC database—configures access to databases supporting the JDBCinterface. This includes most major relational database systems,including those implementing the ODBC interface.

Reference—information references citing original source and generaldescription of layer's data. These fields are provided for referencepurposes.

The Text Spreadsheet section 4402 includes the following fields andbuttons:

Text spreadsheet field—file name of the delimited text spreadsheet touse as the layer's data source. This field is set using the ChooseSpreadsheet and Clear Spreadsheet buttons below. Delimited textspreadsheets eligible for use as layer data sources include commadelimited (.csv) or tabbed delimited (.txt) files that can be saved fromspreadsheet programs such as Microsoft Excel.

It is noted that an algorithm can be employed in conjunction with usinga text spreadsheet as a layer data source. The system ignores all rowsin the file until it finds a row sensed as the column header of thedata. This row includes cells containing the names of each column in thelayer that does not have a formula defined. The columns do not have tobe in the same order as the layer, and there can be extra columnsbesides those expected by the layer. Once this row has been found, allrows immediately following it are read, using cells from each columnbelow each header column cell as data sources. Rows are read until endof file, or a row is found with not enough cells.

Choose Spreadsheet button—uses a file chooser to choose the delimitedtext spreadsheet data source file. The chosen file is checked to see ifit has an appropriate header for the expected data, and whether anyvalid data rows follow this header. If the chosen file is O.K., then itappears in the Text spreadsheet field and will be used as the datasource for the layer when the layer is read. Data itself is not readinto the layer at this time.

Clear Spreadsheet button—clear delimited text spreadsheet as the datasource for the layer. The Text spreadsheet file is cleared, and thelayer does not have a configured delimited text spreadsheet data source.

Read Spreadsheet button—read the data from the defined delimited textspreadsheet file into the layer. O.K. if the layer already has dataunits, from any source. Newly read data take precedence. This button isnormally used to test newly defined text spreadsheet data sources.

The JDBC database section 4404 is used to configure a databaseimplementing the JDBC interface as a data source for the layer. The JDBCinterface uses an appropriate driver to connect with the databasedesignated by a URL. The system then expects compatible data columns inthe database table (or tables) named in the FROM field. Each layercolumn that does not have a formula defined has a column in the databasehaving the same name. They also have compatible data types. This JDBCdatabase section includes the following fields and buttons:

FROM field—contains the database table (or tables) to be read. Whenblank, no JDBC data source is defined. Multi-table joins can beconfigured by listing more than one table, separated by commas. In thiscase, the WHERE field is filled out to configure the join criteria. TheSet button is used to put FROM field contents into effect. The FROMfield is the master field for JDBC data source configuration. Settingthis field activates the other fields. When reading an entire singledatabase table using a default driver and URL, the FROM field is theonly field that needs to be set.

WHERE field—contains the SQL WHERE clause used either to filter the databeing read or to specify a join criteria. This field is left blank whenreading an entire single database table. The Set button is used to putWHERE field contents into effect.

URL field—contains the URL used to connect with the database. When apassword is required, embed the keyword % PASSWORD % in the URL. Thesystem prompts the user for the password when connecting with thedatabase. The Set button is used to put URL field contents into effect.

Driver field—contains the name of the Java driver class used to accessthe database. The Set button is used to put the Driver field contentsinto effect.

Clear Database Source button—clears JDBC database source configurationfor layer. The WHERE, URL, and Driver fields will become inactive.

Read Database button—read data into the layer from the currently definedJDBC configuration. When configuring a database source, the ReadDatabase button is used to test the JDBC configuration.

The Reference section is used to capture reference information about thelayer and its original data source. The fields in this section areprovided for reference purposes. This section includes the followingfields and buttons:

Citation field—contains a citation reference to the original source ofthe layer's data. It can be thought of as a footnote for the layer. TheSet button is used to put the Citation field contents into effect.

Description field—contains a general description of the layer. The Setbutton is used to put the Description field contents into effect.

Two general purpose buttons are provided at the bottom of the window, asfollows.

Save Layer button—save the layer's definition. Same as Save Layer buttonon Layer I/O window. Provided here as a convenience, permitting datasource changes to be easily saved.

It is noted that modifications to layers can be saved. From thestandpoint of saving layer modifications, layers include three kinds ofinformation, namely, definition information, position information, andthe data itself. Each is described below.

The layer definition information is saved in a layer definition file. Alayer definition file includes the layer's configuration except foractual unit data and unit positions. This includes the layer's columnstructure, binning levels, default rendering attributes, columnparameters, default initial states when added to views, and pointers tosources of data and position information itself. This layer definitioninformation is the part of the layer that is modified most often as datais explored.

Layer definition files are saved using the Save Layer button found onthe Layer I/O, Define Layer Columns, and Define Layer Sources windows(see FIGS. 42-44). Also, layer definition files are saved for all layerscurrently active in the system when a Save project operation isperformed.

The positions of all units in a layer are saved using the Save Positionsbutton on the Layer I/O window (see FIG. 42). Positions should be savedwhenever unit repositioning has occurred within the system, and it isdesired to preserve these changes.

Layer data can be saved using the Save Data button on the Layer I/Owindow (see FIG. 42). In the presently disclosed embodiment, data issaved to a delimited spreadsheet file, regardless of the original datasource of the layer. The File chooser window is used to select thedelimited text spreadsheet file. If the selected file is different thelayer's currently defined data source, then the user is asked if he orshe wishes to make this the defined data source for the layer (meaningthat the data being saved will be read next time the layer is read).

The data exploration system 100 has functionality to derive values andnew data units for layer data as a function of other layer data. Thisfunctionality enables—

a. Enhanced data exploration, using the derived data directly in views.

b. Convenient generation of data to be used in plotting operations.Sequence numbers are particularly useful.

c. Generation of data units that represent summaries of other layerdata. These units can then be used on views.

d. Generation of connection units that connect existing point units.These connections can then be used as data units in their own right,representing a relationship between the connected point units. Or theycan simply serve as connecting lines, to assist in the making of graphstyle displays by plotting maps.

e. Permit the layer unit that is displayed when a layer is collapsed ona map to be rendered based on a summary of the layer's data.

On the Define Layer Columns window (see FIG. 43), columns can beconfigured to control how they should behave when deriving. This is donein two general ways. First, by setting the summarization rule to be usedwhen data is either summarized from data in the data column into eitherthe layer unit or another layer, or summarized into the data column fromanother layer. Second, by defining a spreadsheet style formula, used toset values of the column's data. Each technique is described in detailbelow. They take effect when the Calculate button on the Layer I/Owindow (see FIG. 42) is used.

With respect to column summarization, each column has a summary type,either for overall layer unit values or layer summarizationcalculations. In general, arithmetical techniques are only available fornumeric column types (Double, Integer, Date). They are controlled on theSummary Type field of the Define Layer Columns window (see FIG. 43).When used in an operation that summarizes data from one layer (source)into another (target), the summary type for the target layer's columntakes precedence, unless it is set to the undefined setting. In thatcase, the summary type from the source layer is used.

Each column can have a spreadsheet style formula defined. It is used tocalculate the value of data cells in the column. Formulae may be definedfor any kind of column. When a formula is defined for a column, thatcolumn is not required to be found in the layer's data source. Formulaeinclude operators, column references, constants, keywords, andfunctions. Evaluation of the formula results in an appropriate value fora cell in the column. There are three categories of formulae, dependingon column type, as follows.

Numeric—column types are Integer, Double, EastPos, NorthPos.

Boolean—column type is Boolean.

String—column types are String, Parent, Owner, Relative, OwnerRelative,EndPoint, EndOwner.

Each formula category is described below. Operators, keywords, andfunctions are each described. In general, column references are made bygiving the name of the column in the formula. The column is in the samelayer as the formula. As the formula is evaluated, the column referenceevaluates to the value of the cell in that column in the current row. Ifthat value is missing, then the entire formula evaluates to a missingvalue. Column references evaluate to strings that are legal for theparticular formula category, i.e., numeric formulae reference numericcolumns, Boolean formulae reference Boolean columns, and string columnsreference any kind of column.

In the presently disclosed embodiment, function names are caseinsensitive and column names are case sensitive. If a column name hasthe same name as a function, then the column name takes precedence.Because column names are case sensitive, the two can be distinguishedusing capitalization different from the column name for the functionname.

There are different categories of functions. Within each formulacategory, all functions evaluate to a legal value for that formulacategory. Specifically, regular functions perform operations appropriatefor the particular formula category, and normally take arguments thatare expressions of that category. Summary functions mimic the summarytype behavior. They summarize values in a given column in the layer,which is typically named in the first argument of the function.Remaining arguments (if any) are optional column references, which aresort keys to group the rows to be summarized, ranging in the order ofsignificance. Logical functions evaluate to the result of their last twoarguments, each of which is an expression of the appropriate formulacategory, depending on the result of a logical test appropriate for thegiven function and whose inputs are given by the first one or twoarguments. If the logical test evaluates to “true”, then the firstexpression is used. If the logical test evaluates to “false”, then thesecond expression is used.

The Calculate button on the Layer I/O window (see FIG. 42) causes layerdata in the selected layer to be calculated, using column formulae and,optionally, data in related layers. There are several types ofcalculation operations, depending on whether the selected layer hassubordinate layers in the layer tree. In all cases, the formulae in theselected layer are executed. The data exploration system 100 cancalculate new units, as controlled by the layer hierarchy, summarizationtype, and column formulae.

The calculation types include the following:

Calculate formula—selected layer has no subordinate layers. Only theformulae in the selected layer are executed. No other layers areinvolved.

Summarization—selected point layer has a single subordinate point layerat the immediate next lower level. Calculate column values based onrelated columns from the immediate subordinate layer in layer tree.Columns are matched by having same column name. Summarization type andeligibility are controlled by column summarization parameters. Groupingis done by column in subordinate layer having the same name as Unitcolumn in selected layer.

Join—the selected point layer has two subordinate point layers at theimmediate next lower level. The columns of the two subordinate layersare combined (joined) into the selected layer (called the join layer).The join layer takes columns having the same name from either of twosubordinate layers. If one of the subordinate layers includes units thatare subordinate to units in the other subordinate layer, then the unitsof that layer (the child layer) are used as units in the join layer.Values for columns of the parent unit in the other layer (the parentlayer) are repeated for each child layer unit in the join layer. Ifsubordinate layers do not have parent-child unit relationships, thenjoin layer will get a unit for each unit in the first subordinate layer.

Join connect—the same as join, except the selected layer is a connectionlayer (layer containing EndPoint columns). Units in the join layer(connections) are connection units connecting units in each of thesubordinate layers. A connection is made between each child unit to itsparent unit.

Connect units—the selected connection layer (the layer containingEndPoint columns) has a single subordinate point layer at the next lowerlevel. Adjacent subordinate layer units in the given order and group areconnected. Order and grouping are done by the first column in asubordinate layer having the same name as a column in the selected layer(the connect layer). If there is no such column, then all adjacentsubordinate layer units are connected, in the order that they occur inthe layer. Data columns are matched by having the same column name. Thesummarization type is used to control how the data fields are filledout.

Clicking the Start edit button on a view (map, table, or tree, see FIGS.3-5) opens an edit window for that view and puts the view into editmode. Edit mode allows units to be added and removed from layerscurrently being used by the view. In addition, edit mode on map viewspermits the editing of units directly on the map. Edit mode on tablespermits data values in the table's cells to be changed. Closing the editwindow, or clicking the edit button on the view again (now labeled EndEdit), terminates the edit mode, returning the view to display mode.

On any type of view in the edit window, layers may be selected forediting and units may be added and removed from them. FIGS. 45 a-45 bdepict two illustrative examples of edit windows. FIG. 45 a depicts thewindow appearance when point units are being edited, and FIG. 45 bdepicts the window appearance when connection units are being edited.

As shown in FIGS. 45 a-45 b, an edit window has two sections, a Layerssection 4502 a-4502 b and a Units section 4504 a-4504 b. The Layerssection controls which layer is currently being editing, includingwhether point layers or connection layers are being edited. This sectionis used both when editing units directly from the edit window and when“map editing”. The Units section allows units to be added and removed tothe selected layer directly from the edit window. Another way of addingand removing units by editing is by “map editing” using the mouse, asdescribe below.

The layers section 4502 a-4502 b of the edit window is used to selectthe type of layer to be edited and the specific layer itself. Itincludes the following fields and buttons:

Layer types radio buttons Points and Connections—these radio buttonscontrol the type of layer being edited. They also control the kind ofpositioning information expected in the Units section when creating newunits from the edit window itself. Comparing the two windows of FIGS. 45a and 45 b, it can be observed that point units require map coordinates,and connection units require endpoint units. The Points and Connectionsradio buttons control the specific map editing menu picks and editingsequence.

Edit layer picklist—allows selecting of the specific layer on the viewto be edited. This is called the edit layer.

When the Points radio button is selected, the available layers are theview's point layers. When the Connections radio button is selected, theavailable layers are connection layers. A layer is selected before unitscan be created or removed. A specific layer does not have to be selectedto drag a unit to a new position on a map view, or to edit a data valueon a table view.

The units section 4504 a-4504 b of the edit window is used to add and toremove units to/from the selected layer, using only the edit windowitself. This can be done from any kind of view. It includes thefollowing fields, checkbox, and buttons:

Unit name field—the user enters the unit name when adding a new unit,and the name of an existing unit in the selected layer when removing aunit.

Unit east position and Unit north position fields (Pointsonly)—positioning information for new point units. The user enters newpoint units east and north map coordinates when adding a new point unit.Map coordinates in each dimension typically range from 0.0 to 10.0, asfractional parts of a map's base size.

End1 unit name and End2 unit name fields (Connections only)—positioninginformation for new connection units. When adding a new connection unit,the user enters names of existing point units to be used as the newconnection's endpoints. These endpoint units do not have to be in theassociated view.

No confirm removes checkbox—checking disables asking confirmation ofeach Remove Unit. Normally confirmation is requested when removingunits, including when removing units directly from a map using mapediting. Checking this box suppresses this confirmation and simplyremoves the unit.

Add Unit button—adds unit to the edit layer. The Unit name field andappropriate positioning fields are filled out. If all fields valid, thenthe unit is added to the edit layer and associated view.

Remove Unit button—removes unit named in the Unit name field from theedit layer. The Unit name field is filled out and the unit exists in theedit layer. Confirmation is requested unless the No confirm removescheckbox is checked.

As well as having the editing functionality available on all view typesvia the edit window, maps can be editing directly using the mouse. Thisis done when the map is in the edit mode, in association with the editwindow. When in the edit mode, right clicking causes a popup menu to bedisplayed (the edit popup) that includes menu buttons that initiateediting operations. The choices depend on where the mouse is clicked (ona point or connection or neither) and the layer settings on the editwindow. Adding or removing units requires that an edit layer be selectedon the edit window.

The mouse driven map editing functionality includes the following:

Dragging—point unit positions can be changed by dragging their symbolsto new locations. Several units can be dragged at the same time byselecting multiple units.

Adding point units—point units can be added to the map (and the pointedit layer shown on the edit window) by invoking the Add point unit menubutton on the edit popup when right clicking at the new units location.The current edit layer is a point layer. The user is asked for the newunit's name.

Adding connection units—connections can be added when the current editlayer is a connection layer. New connections are added by invoking theAdd new connection menu button when right clicking on the point unitthat will be the connection's first endpoint. The user is asked for thenew unit's name. After the name has been entered, the second endpoint isselected by clicking on its point symbol (or by dragging to it from thefirst endpoint unit).

Removing units—units can be removed from a map by invoking the Removepoint or Remove connection menu button when right clicking on the pointsymbol or the connection control point to be removed. The unit is in theedit layer. Confirmation is requested unless the No confirm removescheckbox is checked on the edit window.

It will be appreciated by those of ordinary skill in the art thatfurther modifications to and variations of the above-described dataexploration system may be made without departing from the inventiveconcepts disclosed herein. Accordingly, the invention should not beviewed as limited except as by the scope and spirit of the appendedclaims.

1. A data exploration and analysis system for facilitating a user'sanalysis and comprehension of information relationships within one ormore groups of data units, comprising: at least one processor; at leastone software program; at least one memory operative to store thesoftware program and the one or more groups of data units; and at leastone output device, wherein each of the at least one memory and the atleast one output device is communicably coupled to the processor, andwherein the processor executes the software program out of the memory,and cooperates with the output device: to obtain the one or more groupsof data units from at least one data source; to organize the respectivegroups of data units in a plurality of layers, the plurality of layersincluding at least one parent layer and at least one child layer,wherein a containment relationship exists between at least one data unitin the parent layer and at least one data unit in the child layer; tooutput, via the output device, a compound plot of the data units in theparent and child layers relative to x and y coordinate axes, includingcreating at least one first plot controller and at least one second plotcontroller for controlling plotting of the respective groups of dataunits in the parent and child layers, respectively, in the compoundplot; wherein the first plot controller is operative: to plot each dataunit in the parent layer relative to the x and y coordinate axes, eachplotted data unit in the parent layer being represented by a firstsymbol having a corresponding position relative to the x and ycoordinate axes; and wherein the second plot controller is operative: toplot each data unit in the child layer relative to the x and ycoordinate axes, each plotted data unit in the child layer beingrepresented by a second symbol having a corresponding position relativeto the x and y coordinate axes, the corresponding position of the secondsymbol being proximate to the corresponding position of the first symbolrepresenting the plotted data unit in the parent layer having thecontainment relationship with the respective data unit in the childlayer; and based on attribute data associated with each data unit in thechild layer, to offset, from the position proximate to the position ofthe first symbol, the position of each second symbol representing theplotted data unit in the child layer along a selected one of the x and ycoordinate axes.
 2. The system of claim 1 wherein the processor furtherexecutes the software program out of the memory to organize each groupof data units in the parent and child layers in a table, each tablehaving a plurality of rows and a plurality of columns, each data unit inthe group corresponding to a respective row of the table, each column ofthe table containing attribute data associated with the data unitcorresponding to the respective row of the table.
 3. The system of claim2 wherein the first plot controller is further operative to plot firstattribute data contained in a selected column of the table for the groupof data units in the parent layer relative to the x and y coordinateaxes, each plotted first attribute datum being represented by the firstsymbol having the corresponding position relative to the x and ycoordinate axes.
 4. The system of claim 2 wherein the second plotcontroller is further operative to plot second attribute data containedin a selected column of the table for the group of data units in thechild layer relative to the x and y coordinate axes, each plotted secondattribute datum being represented by the second symbol having theposition offset along the selected one of the x and y coordinate axes.5. The system of claim 1 wherein the processor further executes thesoftware program out of the memory to implement the first plotcontroller and the second plot controller within a single plotcontroller.
 6. A method of facilitating a user's analysis andcomprehension of information relationships within one or more groups ofdata units, for use in a data exploration and analysis system includingat least one processor, at least one software program, at least onememory for storing the software program and the one or more groups ofdata units, and at least one output device, each of the at least onememory and the at least one output device being communicably coupled tothe processor, the method comprising the steps of: executing thesoftware program, by the processor, to obtain the one or more groups ofdata units from at least one data source; executing the softwareprogram, by the processor, to organize the respective groups of dataunits in a plurality of layers, the plurality of layers including atleast one parent layer and at least one child layer, wherein acontainment relationship exists between at least one data unit in theparent layer and at least one data unit in the child layer; executingthe software program, by the processor, to output, via the outputdevice, a compound plot of the data units in the parent and child layersrelative to x and y coordinate axes, including creating at least onefirst plot controller and at least one second plot controller forcontrolling plotting of the respective groups of data units in theparent and child layers, respectively, in the compound plot; executingthe software program, by the processor via the first plot controller, toplot each data unit in the parent layer relative to the x and ycoordinate axes, each plotted data unit in the parent layer beingrepresented by a first symbol having a corresponding position relativeto the x and y coordinate axes; executing the software program, by theprocessor via the second plot controller, to plot each data unit in thechild layer relative to the x and y coordinate axes, each plotted dataunit in the child layer being represented by a second symbol having acorresponding position relative to the x and y coordinate axes, thecorresponding position of the second symbol being proximate to thecorresponding position of the first symbol representing the plotted dataunit in the parent layer having the containment relationship with therespective data unit in the child layer; and executing the softwareprogram, by the processor via the second plot controller, based onattribute data associated with each data unit in the child layer, tooffset, from the position proximate to the position of the first symbol,the position of each second symbol representing the plotted data unit inthe child layer along a selected one of the x and y coordinate axes. 7.The method of claim 6 further including executing the software program,by the processor, to organize each group of data units in the parent andchild layers in a table, each table having a plurality of rows and aplurality of columns, each data unit in the group corresponding to arespective row of the table, each column of the table containingattribute data associated with the data unit corresponding to therespective row of the table.
 8. The method of claim 7 further includingexecuting the software program, by the processor via the first plotcontroller, to plot first attribute data contained in a selected columnof the table for the group of data units in the parent layer relative tothe x and y coordinate axes, each plotted first attribute datum beingrepresented by the first symbol having the corresponding positionrelative to the x and y coordinate axes.
 9. The method of claim 7further including executing the software program, by the processor viathe second plot controller, to plot second attribute data contained in aselected column of the table for the group of data units in the childlayer relative to the x and y coordinate axes, each plotted secondattribute datum being represented by the second symbol having theposition offset along the selected one of the x and y coordinate axes.10. The method of claim 6 further including executing the softwareprogram, by the processor, to implement the first plot controller andthe second plot controller within a single plot controller.